Promise ķēdes JavaScript

Pieņemsim, ka mums ir šāds promise:

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

Pēc promise pabeigšanas izvadīsim tā rezultātu konsole:

javascriptpromise.then(
  function(result) {
    console.log(result); // izvadīs 'string'
  }
)

Tagad nevis uzreiz izvadīsim rezultātu, bet kaut kā to modificēsim un atgriezīsim caur return:

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

Šajā gadījumā mēs varam uz mūsu then rezultātu piemērot vēl vienu then, tādējādi izveidojot ķēdi metožu. Šajā gadījumā nākamās metodes rezultātā nonāks tas, ko iepriekšējā atgrieza caur return:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // izvadīs 'string!'
  }
);

Tādējādi var izveidot jebkura garuma ķēdi:

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); // izvadīs 'string123'
  }
);