Reťazenie promisov v JavaScripte

Majme nasledujúci promis:

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

Po dokončení promisu vypíšeme jeho výsledok do konzoly:

javascriptpromise.then(
  function(result) {
    console.log(result); // vypíše 'string'
  }
)

Teraz výsledok hneď nevypisujme, ale nejako ho upravme a vráťme pomocou return:

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

V tomto prípade môžeme k výsledku nášho then aplikovať ešte jedno then, čím vytvoríme reťaz metód. Pritom do výsledku nasledujúcej metódy sa dostane to, čo vrátilo pomocou return predchádzajúce:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // vypíše 'string!'
  }
);

Takto je možné vytvoriť reťaz akejkoľvek dĺžky:

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); // vypíše 'string123'
  }
);