Promisekæder i JavaScript

Lad os sige, at vi har følgende promise:

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

Ved afslutningen af promiset, vil vi udskrive dens resultat i konsollen:

javascriptpromise.then(
  function(result) {
    console.log(result); // vil udskrive 'string'
  }
)

Lad os nu ikke udskrive resultatet med det samme, men i stedet ændre det og returnere det via return:

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

I dette tilfælde kan vi anvende endnu en then på resultatet af vores then, og derved skabe en kæde af metoder. I dette tilfælde vil resultatet af den næste metode modtage det, som den forrige returnerede via return:

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

På denne måde kan man bygge en kæde af vilkårlig længde:

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); // vil udskrive 'string123'
  }
);