Ланец на promises во JavaScript
Нека имаме следниов promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
По завршувањето на promise-от, неговиот резултат ќе го испечатиме во конзола:
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'
}
);