Promise trong javascript

Promise trong javascript

Promise

Javascript sinh ra bất đồng bộ để luồng hoạt động trong chương trình không bị block bởi những tác vụ tốn thời gian hoặc fetch data từ chỗ khác

và rồi Javascript phải sinh ra cách để xử lý bất đồng bộ

Xử lý bất động bộ là gì? Xử lý ở đây là chờ - data - của tác vụ bất động bộ trả về - để sử dụng data đó - cho nhiều mục đích khác nhau như hiển thị lên UI, tính toán các bước tiếp theo.

Callback, promise, async/await là các kỹ thuật giúp xử lý bất đồng bộ trong Javascript

Trong bài viết này mình nói về Promise:

  1. Promise:

     new Promise((resolve, reject) => {})
    

    Tạo ra một promise, trong promise đó sẽ triển khai tác vụ bất đồng bộ, và chờ tác vụ đó xử lý, nếu tác vụ bất đồng bộ đó thành công thì gọi hàm resolve còn thất bại thì gọi hàm reject

  2. Promise.all():

     Promise.all(\[promise1, promise2, ... , promiseN\])
    

    Chạy song song các promise. Và 1 là sẽ return tất cả promise resolve, hoặc 2 là nếu chỉ có 1 promise bị reject thì sẽ bỏ qua các promise còn lại (dù là resolve) và return promise reject đó

  3. Promise.allSettled():

     Promise.allSettled(\[promise1, promise2, ... , promiseN\])
    

    Tựa như Promise.all() nhưng khác chỗ là dù thành công hay thất bại đều trả về một mảng đầy đủ các promise

  4. Promise.race():

     Promise.race(\[promise1, promise2, ... , promiseN\])
    

    Chạy song song, promise nào xử lý nhanh nhất thì trả về promise đó mà không quan tâm đến các promise còn lại

  5. Promise.any():

     Promise.any(\[promise1, promise2, ... , promiseN\])
    

Gần giống Promise.race(), khác chỗ là nếu gặp reject sẽ bỏ qua, chỉ trả về promise nhanh nhất và là resolve, nếu không có resolve nào hết thì throw error

Theo mình thấy thì method Promise.all()Promise.any() là hữu ích nhất

Cảm ơn các bạn đã đọc