Promise allSettled vs Promise all

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 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.

Có thể bạn đã bị missing