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);
    }
  }
}

Xem thêm