AggregateError: No Promise in Promise.any was resolved
Ngoại lệ JavaScript "No Promise in Promise.any was resolved" xảy ra khi tất cả các promise được truyền vào Promise.any() đều bị từ chối. Đây là trường hợp sử dụng duy nhất có sẵn của AggregateError.
Thông báo
AggregateError: All promises were rejected (V8-based) AggregateError: No Promise in Promise.any was resolved (Firefox) AggregateError (Safari)
Loại lỗi
AggregateError
Điều gì đã xảy ra?
Promise.any() chỉ từ chối khi tất cả các promise được truyền vào đều bị từ chối. Bạn nên truy cập errors để lấy mảng các lý do từ chối. Xem Sử dụng promise để biết thêm thông tin về cách xử lý các promise bị từ chối bất đồng bộ. Lỗi này cũng được tạo ra khi Promise.any() nhận một iterable rỗng.
Ví dụ
>Iterable rỗng
js
Promise.any([]).catch((error) => {
console.error(error); // AggregateError: No Promise in Promise.any was resolved
});
Xử lý tất cả các từ chối
js
const promises = [
fetch("/data-location1"),
fetch("/data-location1"),
fetch("/data-location1"),
];
Promise.any(promises)
.then((value) => console.log(value))
.catch((error) => {
// Không có fetch nào thành công
for (const e of error.errors) {
console.error(e);
}
});
// Sử dụng await
async function fetchFirstSuccessful() {
try {
const value = await Promise.any(promises);
console.log(value);
} catch (error) {
for (const e of error.errors) {
console.error(e);
}
}
}