Łańcuchy promise w JavaScript
Załóżmy, że mamy następującą promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
Po zakończeniu promise wypiszmy jej wynik w konsoli:
promise.then(
function(result) {
console.log(result); // wypisze 'string'
}
)
A teraz nie wypisujmy od razu wyniku,
lecz go zmodyfikujmy i zwróćmy przez return:
promise.then(
function(result) {
return result + '!';
}
);
W tym przypadku możemy do wyniku naszego
then zastosować jeszcze jeden then, tworząc w ten
sposób łańcuch metod. Przy tym do
wyniku następnej metody trafi
to, co zwrócił przez return poprzedni:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // wypisze 'string!'
}
);
W ten sposób można zbudować łańcuch dowolnej długości:
promise.then(
function(result) {
return result + '1';
}
).then(
function(result) {
return result + '2';
}
).then(
function(result) {
return result + '3';
}
).then(
function(result) {
console.log(result); // wypisze 'string123'
}
);