Zinxhirët e Premtimeve në JavaScript

Le të kemi premtimin e mëposhtëm:

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

Pas përfundimit të premtimit, le të shfaqim rezultatin e tij në konsol:

javascriptpromise.then(
  function(result) {
    console.log(result); // do të shfaqë 'string'
  }
)

Tani, në vend që ta shfaqim menjëherë rezultatin, le ta modifikojmë atë dhe ta kthejmë përmes return:

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

Në këtë rast, ne mund të aplikojmë një then tjetër në rezultatin e then tonë, duke krijuar kështu një zinxhir metodash. Në këtë mënyrë, rezultati i metodës pasuese do të marrë atë që u kthye nga return i mëparshmi:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // do të shfaqë 'string!'
  }
);

Kështu mund të ndërtohet një zinxhir i çfarëdo gjatësie:

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); // do të shfaqë 'string123'
  }
);