Lanac promisa u JavaScript

Neka imamo sledeći promis:

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

Po završetku promisa, ispisaćemo njegov rezultat u konzolu:

javascriptpromise.then(
  function(result) {
    console.log(result); // ispisaće 'string'
  }
)

Sada, umesto da odmah ispisujemo rezultat, hajde da ga izmenimo i vratimo pomoću return:

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

U ovom slučaju možemo na rezultat našeg then primeniti još jedan then, time stvarajući lanac metoda. Pritom, u rezultat sledećeg metoda će stizati ono što je prethodni vratio putem return:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // ispisaće 'string!'
  }
);

Na ovaj način možemo izgraditi lanac bilo koje dužine:

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); // ispisaće 'string123'
  }
);