Promisekedjor i JavaScript
Låt oss säga att vi har följande promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
När promiset är klart skriver vi ut dess resultat i konsolen:
promise.then(
function(result) {
console.log(result); // skriver ut 'string'
}
)
Låt oss nu inte skriva ut resultatet direkt,
utan ändra det på något sätt och returnera det via return:
promise.then(
function(result) {
return result + '!';
}
);
I det här fallet kan vi applicera ytterligare en then
på resultatet av vår then, och på så sätt skapa
en kedja av metoder. Resultatet av nästa metod
kommer att innehålla det som returnerades via
return från den föregående:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // skriver ut 'string!'
}
);
På detta sätt kan man bygga en kedja av godtycklig längd:
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); // skriver ut 'string123'
}
);