Ланци промиса у 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'
  }
);