+12

Promise trong Javascript (Hiểu một cách đơn giản)

Mayfest2023

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() và Promise.any() là hữu ích nhất

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


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí