AbortSignal: phương thức throwIfAborted()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2022.

Note: This feature is available in Web Workers.

Phương thức throwIfAborted() ném ra reason hủy của tín hiệu nếu tín hiệu đã bị hủy; nếu không, nó không làm gì cả.

Một API cần hỗ trợ khả năng hủy có thể chấp nhận một đối tượng AbortSignal và dùng throwIfAborted() để kiểm tra rồi ném lỗi khi sự kiện abort được phát tín hiệu.

Phương thức này cũng có thể được dùng để hủy thao tác tại những điểm cụ thể trong mã, thay vì truyền tín hiệu vào các hàm nhận một tín hiệu.

Cú pháp

js
throwIfAborted()

Tham số

Không có.

Giá trị trả về

Không có (undefined).

Ví dụ

Các ví dụ dưới đây lấy từ đặc tả.

Hủy một thao tác thăm dò

Ví dụ này minh họa cách bạn có thể dùng throwIfAborted() để hủy một thao tác thăm dò.

Hãy xét một hàm bất đồng bộ waitForCondition() được gọi với một hàm bất đồng bộ khác là func, một giá trị đích targetValue và một AbortSignal. Phương thức này so sánh kết quả của func với targetValue trong một vòng lặp và trả về khi chúng khớp.

js
async function waitForCondition(func, targetValue, { signal } = {}) {
  while (true) {
    signal?.throwIfAborted();

    const result = await func();
    if (result === targetValue) {
      return;
    }
  }
}

Ở mỗi vòng lặp, chúng ta dùng throwIfAborted() để ném ra reason của tín hiệu nếu thao tác đã bị hủy, còn nếu không thì không làm gì cả. Nếu tín hiệu bị hủy, điều này sẽ khiến promise waitForCondition() bị từ chối.

Thông số kỹ thuật

Specification
DOM
# ref-for-dom-abortsignal-throwifaborted①

Tương thích trình duyệt

Xem thêm