Создание цепочек промисов
Цепочка промисов – это простая концепция, в основу которой положено то, что методы промисов тоже в качестве результата возвращают промис. А так как они возвращают промис, то мы для них в свою очередь тоже можем вызвать методы и т.д. Таким образом, мы можем создавать цепочку из промисов, каждый из которых выполняется только после того как завершился предыдущий.
По простому цепочка промисов позволяет очень компактно записать код для последовательного выполнения нескольких асинхронных задач, каждая из которых должна выполняется после завершения предыдущей.
Пример цепочки промисов:
const promise = new Promise(resolve => {
setTimeout(() => resolve(2), 3000);
});
promise
.then(value => {
console.log(value);
return new Promise(resolve => {
setTimeout(() => resolve(value * 2), 3000);
});
})
.then(value => {
console.log(value);
return new Promise(resolve => {
setTimeout(() => resolve(value * 2), 3000);
});
})
.then(value => console.log(value))
В этом примере:
- Сначала выполняется первый промис, который успешно завершится через 3 секунды со значением 2
- После этого выполнится метод
then()
, который выведет в консоль значение переменнойvalue
, которое равно аргументу, переданному вresolve()
и возвратит в качестве результата новый промис; он также как и предыдущий успешно завершится через 3 секунды со значениемvalue * 2
- Затем выполнится следующий
then()
, он выполнит действия аналогично предыдущемуthen()
- Дальше выполнится последний
then()
, который просто выведет в консоль значение параметраvalue