Ланцугі промісаў у 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'
}
);