Promise láncok a JavaScriptben

Tegyük fel, hogy a következő promiseunk van:

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

A promise befejezése után írjuk ki az eredményét a konzolra:

javascriptpromise.then(
  function(result) {
    console.log(result); // kiírja 'string'
  }
)

Most ne azonnal írjuk ki az eredményt, hanem módosítsuk valahogy és adjuk vissza a return segítségével:

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

Ebben az esetben az eredményünkhöz alkalmazhatunk még egy then metódust, ezzel létrehozva egy láncot a metódusokból. Eközben a következő metódus eredményébe az kerül, amit az előző return segítségével visszaadott:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // kiírja 'string!'
  }
);

Így tetszőleges hosszúságú lánc építhető:

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); // kiírja 'string123'
  }
);