Nội dung bài viết
Video học lập trình mỗi ngày
Promise allSettled sau được đề cử thì ES2020 đã chính thức phát hành để sử dụng chúng. Những developer nào đã từng promise.allsettled is not a function giờ đây sẽ không cần tìm kiếm câu trả lời nữa đâu. Và bài post này sẽ giới thiệu ngắn gọn về method Promise.allSettled()
Yêu cầu người đọc
- Hiểu và sử dụng Promise trong javascript
Khác nhau giữa Promise allSettled vs Promise all
Promise.all() là gì? Và sử dụng như thế nào? Thì tipjs đã giới thiệu rất nhiều và đặc biệt là ở bài viết: Promise.all javascript giúp tôi xử lý performance thế nào?.
Cho nên ở bài post này, tipjs chỉ nói về sự khác nhau khi sử dụng Promise allSettled
và Promise all.
Promise all
sẽ reject ngay khi có một Promise trong Array đưa vào return về reject. Điều đó có nghĩa là, xem ví dụ dưới đây:
Promise.all([ Promise.reject('✗'), Promise.reject('✗'), Promise.resolve('✓'), Promise.reject('✗'), ]).catch((err) => { console.log('You win at life', err); })
Sau khi run xong thì chúng ta sẽ nhận được Ouput sau: "You win at life ✗". Chứng tỏ rằng, một Promise all sẽ reject ngay khi một trong sô promise kia return reject.
Thật ra bạn nào theo dõi fan page tipjs lâu rồi thì sẽ biết một bài viết về tính năng này, nhưng lúc đó nó chưa ra, ở đó có nhiều method được để cử trong đó có Promise allSettled, bạn có thể check tại bài viết Promise javascript những hạng mục được để cử
Promise allSettled
sẽ chạy hết tất cả Promise có trong array, bất kể chúng return reject hay fulfilled, xem ví dụ dưới đây.
Promise.allSettled([ Promise.reject('✗'), Promise.reject('✗'), Promise.resolve('✓'), Promise.reject('✗'), ]).then(function(value) { console.log(`You win at life`, value) })
Ouput:
You win at life, [ { status:"rejected", reason:"✗" }, { status:"rejected", reason:"✗" }, { status:"fulfilled", value:"✓" }, { status:"rejected", reason:"✗" } ]
Promise allSettled
hay ở chỗ trả về hết bao gồm status và reason. Trên đây là khác nhau về cách sử dụng của Promise allSettled vs Promise all. Nhanh và gọn, không nói nhiều.