Chuỗi Promise trong JavaScript
Giả sử chúng ta có Promise sau:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
Sau khi Promise hoàn thành, hãy in kết quả của nó ra console:
promise.then(
function(result) {
console.log(result); // sẽ in ra 'string'
}
)
Bây giờ chúng ta đừng in kết quả ngay lập tức,
mà hãy thay đổi nó một chút và trả về thông qua return:
promise.then(
function(result) {
return result + '!';
}
);
Trong trường hợp này, chúng ta có thể áp dụng một then khác
vào kết quả của then của chúng ta, từ đó
tạo ra một chuỗi các phương thức. Khi đó,
kết quả trả về của phương thức trước sẽ được
chuyển vào phương thức tiếp theo thông qua return:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // sẽ in ra 'string!'
}
);
Như vậy có thể xây dựng một chuỗi có độ dài tùy ý:
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); // sẽ in ra 'string123'
}
);