Например, необходимо обратиться к REST-сервису при помощи fetch API (это более удобная замена XMLHttpRequest с хорошей поддержкой современными браузерами).
Функция fetch
возвращает Promise, типичное использование которого выглядит так:
fetch('https://api.my-server.ru')
.then(response => response.json()) // парсим JSON
.then(data => console.log(data)) // обрабатываем результат
Более сложные примеры использования fetch
можно найти в этом туториале.
Но из этого простого примера не ясно, в чем преимущество Promise пред обычными callback-запросами. А оно заключается в том, что с результатом Promise можно выполнять операции как с объектами.
Например, нам необходимо скачать три JSON-файла с разных эндпоинтов сервера и сделать операцию по окончании загрузки всех трех файлов. При помощи Promise.all это делается очень легко:
const promiseNews = fetch('https://api.my-server.ru/news.json')
.then(r => r.json());
const promisePosts = fetch('https://api.my-server.ru/posts.json')
.then(r => r.json());
const promiseComments = fetch('https://api.my-server.ru/comments.json')
.then(r => r.json());
Promise.all([promiseNews, promisePosts, promiseComments])
.then(([news, posts, comments]) => {
console.log('News:', news);
console.log('Posts:', posts);
console.log('Comments:', comments);
})