Պրոմիսների շղթաները JavaScript-ում

Ենթադրենք ունենք հետևյալ պրոմիսը՝

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

Պրոմիսի ավարտին դրա արդյունքը ցույց կտանք կոնսոլում՝

javascriptpromise.then(
  function(result) {
    console.log(result); // կցուցադրի 'string'
  }
)

Այժմ եկեք անմիջապես չցուցադրենք արդյունքը, այլ ինչ-որ կերպ փոխենք այն և վերադարձնենք return-ի միջոցով՝

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

Այս դեպքում մենք կարող ենք մեր then-ի արդյունքին կիրառել ևս մեկ then՝ դրանով իսկ ստեղծելով շղթա մեթոդների: Ընդ որում, հաջորդ մեթոդի արդյունքին կհասնի այն, ինչ վերադարձվել է նախորդի կողմից return-ի միջոցով՝

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // կցուցադրի 'string!'
  }
);

Այսպիսով կարելի է կառուցել ցանկացած երկարության շղթա՝

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