Sự khác biệt giữa:
new Promise(function(res, rej) {
res("aaa");
})
.then(function(result) {
return "bbb";
})
.then(function(result) {
console.log(result);
});
và điều này:
new Promise(function(res, rej) {
res("aaa");
})
.then(function(result) {
return Promise.resolve("bbb");
})
.then(function(result) {
console.log(result);
});
Tôi đang hỏi khi tôi nhận được các hành vi khác nhau bằng cách sử dụng dịch vụ Angular và $ http với chuỗi .then (). Một chút quá nhiều mã do đó đầu tiên ví dụ ở trên.
then
xử lý, thực tế, đó là khía cạnh quan trọng của thông số hứa hẹn mà bạn có thể thực hiện.
then
s được lồng tùy ý - thuật ngữ 'các ngôn ngữ khác' cho điều này then
là cả a map
và a flatMap
.
new Promise((res, rej) => { return fetch('//google.com').then(() => { return "haha"; }) }).then((result) => alert(result));
Mã này sẽ chỉ bị treo (không được giải quyết mãi mãi). Nhưng nếu tôi đổi return "haha";
thành return res("haha");
thì nó sẽ hoạt động và cảnh báo "haha". Không phải việc tìm nạp (). Sau đó () đã gói "haha" vào một lời hứa đã được giải quyết?
Promise.resolve()
ví dụ thứ hai là không cần thiết.