Catene di Promise in JavaScript
Supponiamo di avere la seguente Promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
Alla risoluzione della Promise, stampiamo il suo risultato in console:
promise.then(
function(result) {
console.log(result); // stamperà 'string'
}
)
Ora, invece di stampare immediatamente il risultato,
modifichiamolo e restituiamolo tramite return:
promise.then(
function(result) {
return result + '!';
}
);
In questo caso, possiamo applicare un altro then
al risultato del nostro then, creando così
una catena di metodi. In questo modo,
al metodo successivo passerà ciò che è stato
restituito tramite return dal precedente:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // stamperà 'string!'
}
);
In questo modo è possibile costruire una catena di qualsiasi lunghezza:
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); // stamperà 'string123'
}
);