Rantai Promise dalam JavaScript

Katakan kita mempunyai promise berikut:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    resolve('string');
  }, 3000);
});

Selepas promise selesai, mari kita output hasilnya ke konsol:

javascriptpromise.then(
  function(result) {
    console.log(result); // akan output 'string'
  }
)

Sekarang, jangan terus output hasilnya, tapi ubah suainya dan kembalikan melalui return:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
);

Dalam kes ini, kita boleh gunakan then sekali lagi pada hasil then kita, dengan itu mencipta rantai kaedah. Hasil kaedah seterusnya akan menerima apa yang dikembalikan oleh return sebelumnya:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // akan output 'string!'
  }
);

Dengan cara ini, rantai sepanjang mana pun boleh dibina:

javascriptpromise.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 output 'string123'
  }
);