Promise ketjut JavaScriptissä
Oletetaan, että meillä on seuraava promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
Promisea valmistumisen jälkeen tulostamme sen tuloksen konsoliin:
promise.then(
function(result) {
console.log(result); // tulostaa 'string'
}
)
Älkäämme nyt tulostako tulosta välittömästi,
vaan muutetaan sitä jotenkin ja palautetaan se return:n kautta:
promise.then(
function(result) {
return result + '!';
}
);
Tässä tapauksessa voimme tulokseemme
then:stä soveltaa vielä toisen then:in, luoden näin
ketjun metodeista. Samalla
seuraavan metodin tulokseen tulee
se, minkä edellinen palautti return:lla:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // tulostaa 'string!'
}
);
Näin voidaan rakentaa minkä pituinen tahansa ketju:
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); // tulostaa 'string123'
}
);