Promisekæder i JavaScript
Lad os sige, at vi har følgende promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
Ved afslutningen af promiset, vil vi udskrive dens resultat i konsollen:
promise.then(
function(result) {
console.log(result); // vil udskrive 'string'
}
)
Lad os nu ikke udskrive resultatet med det samme,
men i stedet ændre det og returnere det via return:
promise.then(
function(result) {
return result + '!';
}
);
I dette tilfælde kan vi anvende endnu en then på resultatet af vores
then, og derved skabe en kæde af metoder. I dette
tilfælde vil resultatet af den næste metode modtage
det, som den forrige returnerede via return:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // vil udskrive 'string!'
}
);
På denne måde kan man bygge en kæde af vilkårlig længde:
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); // vil udskrive 'string123'
}
);