Verige promisov v JavaScriptu

Recimo, da imamo naslednji promis:

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

Po zaključku promisa izpišimo njegov rezultat v konzolo:

javascriptpromise.then(
  function(result) {
    console.log(result); // bo izpisal 'string'
  }
)

Zdaj pa ne izpišimo rezultata takoj, ampak ga nekako spremenimo in vrnimo prek return:

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

V tem primeru lahko na rezultat našega then uporabimo še en then, s čimer ustvarimo verigo metod. Pri tem bo v rezultat naslednje metode prišlo tisto, kar je prejšnja vrnila prek return:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // bo izpisal 'string!'
  }
);

Na ta način je mogoče zgraditi verigo poljubne dolž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); // bo izpisal 'string123'
  }
);