⊗jsSpPrmAr 170 of 294 menu

Làm việc với mảng promise trong JavaScript

Bây giờ chúng ta sẽ phân tích hai phương thức hữu ích, cho phép làm việc với mảng promise. Phương thức Promise.all cho phép thực thi mã khi tất cả các promise được truyền vào nó dưới dạng mảng hoàn thành, còn phương thức Promise.race chờ promise đầu tiên trong mảng hoàn thành, và bỏ qua các promise còn lại.

Cả hai phương thức đều trả về một promise mới làm kết quả. Đối với phương thức Promise.all, kết quả của promise này sẽ là một mảng chứa kết quả của tất cả các promise được truyền vào (thứ tự kết quả tương ứng với thứ tự promise trong mảng), còn đối với Promise.race - kết quả của promise đầu tiên hoàn thành.

Hãy xem xét trong thực tế. Giả sử chúng ta có một mảng promise:

let promises = [ new Promise(resolve => setTimeout(() => resolve(1), 1000)), new Promise(resolve => setTimeout(() => resolve(2), 2000)), new Promise(resolve => setTimeout(() => resolve(3), 3000)), ];

Hãy sử dụng Promise.all để chờ tất cả các promise trong mảng của chúng ta hoàn thành:

Promise.all(promises).then(function(res) { console.log(res); // sẽ in ra [1, 2, 3] - kết quả của tất cả các promise });

Và bây giờ sử dụng Promise.race để chờ hoàn thành promise đầu tiên:

Promise.race(promises).then(function(res) { console.log(res); // sẽ in ra 1 - kết quả của promise đầu tiên hoàn thành });

Nếu ít nhất một promise trong mảng bị từ chối, thì promise kết quả sẽ ngay lập tức chuyển sang trạng thái rejected. Do đó ngoại lệ xảy ra có thể được bắt bằng cách thông thường, đã được bạn học, ví dụ thông qua catch:

Promise.all(promises).then(function(res) { console.log(res); }).catch(function(err) { console.log(err); });

Tạo một hàm trả về một promise, bên trong nó thiết lập độ trễ ngẫu nhiên từ 1 đến 10 giây. Hãy để kết quả của promise là chính độ trễ đó. Sử dụng vòng lặp và hàm của bạn để điền mảng với 10 promise.

Sử dụng mảng promise từ bài tập trước làm sao để in ra console kết quả của promise đầu tiên hoàn thành.

Sử dụng mảng promise từ bài tập trước làm sao để in ra console tổng kết quả của tất cả các promise.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối