JavaScript'te Zincirleme Promise'ler

Diyelim ki aşağıdaki promise'imiz var:

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

Promise tamamlandığında, sonucunu konsola yazdıralım:

javascriptpromise.then(
  function(result) {
    console.log(result); // 'string' yazdıracak
  }
)

Şimdi sonucu hemen yazdırmak yerine, onu bir şekilde değiştirip return ile geri döndürelim:

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

Bu durumda, then metodumuzun sonucuna başka bir then uygulayabilir, böylece bir zincir metotlar oluşturabiliriz. Bu durumda, bir sonraki metoda, bir öncekinin return ile döndürdüğü sonuç geçer:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // 'string!' yazdıracak
  }
);

Böylece istediğiniz uzunlukta bir zincir oluşturulabilir:

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); // 'string123' yazdıracak
  }
);