Lanțuri de promisiuni în JavaScript
Să presupunem că avem următoarea promisiune:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
La finalizarea promisiunii, vom afișa rezultatul acesteia în consolă:
promise.then(
function(result) {
console.log(result); // va afișa 'string'
}
)
Acum, în loc să afișăm imediat rezultatul,
să-l modificăm cumva și să-l returnăm prin return:
promise.then(
function(result) {
return result + '!';
}
);
În acest caz, putem aplica un alt then
rezultatului nostru din then, creând astfel
un lanț de metode. În acest caz,
rezultatul următoarei metode va primi
ceea ce a returnat precedentul prin return:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // va afișa 'string!'
}
);
Astfel, se poate construi un lanț de orice lungime:
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); // va afișa 'string123'
}
);