Вериги от промени в 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'
}
);