Заминҳои ваъдаҳо дар 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'-ро чоп мекунад
  }
);