პრომისების ჯაჭვები JavaScript-ში
დავუშვათ, გვაქვს შემდეგი პრომისი:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
პრომისის დასრულების შემდეგ გამოვიტანოთ მისი შედეგი კონსოლში:
promise.then(
function(result) {
console.log(result); // გამოიტანს 'string'
}
)
ახლა კი არა რომ დაუყოვნებლივ გამოვიტანოთ შედეგი,
არამედ როგორმე შევცვალოთ იგი და დავაბრუნოთ return-ის საშუალებით:
promise.then(
function(result) {
return result + '!';
}
);
ამ შემთხვევაში, ჩვენ შეგვიძლია ჩვენი then-ის
შედეგს მივუმაგროთ კიდევ ერთი then, ამით შევქმნათ
მეთოდების ჯაჭვი. ამ შემთხვევაში
შემდეგ მეთოდში შედეგად იმას მივიღებთ,
რასაც წინამა მეთოდი დააბრუნებს return-ის საშუალებით:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // გამოიტანს 'string!'
}
);
ამის საშუალებით შესაძლებელია ნებისმიერი სიგრძის ჯაჭვის აგება:
promise.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'
}
);