Պրոմիսների շղթաները 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'
}
);