JavaScript-da Promise Zanjirlari

Faraz qilaylik, bizda quyidagi promise mavjud:

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

Promise tugagach, uning natijasini konsolga chiqaramiz:

javascriptpromise.then(
  function(result) {
    console.log(result); // 'string' ni chiqaradi
  }
)

Keling, endi natijani darhol chiqarish o'rniga, uni o'zgartiramiz va return orqali qaytaramiz:

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

Bunday holatda, biz o'zimizning then natijamizga yana boshqa then ni qo'llashimiz mumkin, shu tariqa zanjir metodlarini yaratgan bo'lamiz. Bunda keyingi metodga oldingi metod return orqali qaytgan narsa tushadi:

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

Shu tarzda istalgan uzunlikdagi zanjirni qura olamiz:

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' ni chiqaradi
  }
);