Rantai Promise di JavaScript
Misalkan kita memiliki promise berikut:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
Setelah promise selesai, kita akan menampilkan hasilnya ke konsol:
promise.then(
function(result) {
console.log(result); // akan menampilkan 'string'
}
)
Sekarang, mari kita tidak langsung menampilkan hasilnya,
tapi mengubahnya dan mengembalikannya melalui return:
promise.then(
function(result) {
return result + '!';
}
);
Dalam hal ini, kita dapat menerapkan then lain
pada hasil then kita, sehingga menciptakan
rantai metode. Dengan demikian,
hasil dari metode berikutnya akan berisi
apa yang dikembalikan oleh metode sebelumnya melalui return:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // akan menampilkan 'string!'
}
);
Dengan cara ini, rantai dengan panjang berapa pun dapat dibangun:
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); // akan menampilkan 'string123'
}
);