Reťazenie promisov v JavaScripte
Majme nasledujúci promis:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
Po dokončení promisu vypíšeme jeho výsledok do konzoly:
promise.then(
function(result) {
console.log(result); // vypíše 'string'
}
)
Teraz výsledok hneď nevypisujme,
ale nejako ho upravme a vráťme pomocou return:
promise.then(
function(result) {
return result + '!';
}
);
V tomto prípade môžeme k výsledku nášho
then aplikovať ešte jedno then, čím vytvoríme
reťaz metód. Pritom do
výsledku nasledujúcej metódy sa dostane
to, čo vrátilo pomocou return predchádzajúce:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // vypíše 'string!'
}
);
Takto je možné vytvoriť reťaz akejkoľvek dĺžky:
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); // vypíše 'string123'
}
);