პრომისების ჯაჭვები 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'
  }
);