AbortSignal:throwIfAborted() 方法

注意:此功能在Web Workers中可用。

throwIfAborted() 方法在信号被中止时抛出信号的中止reason;否则什么也不做。

需要支持中止的 API 可以接受一个AbortSignal 对象,并使用 throwIfAborted() 来测试和抛出abort 事件被发出时的错误。

此方法也可用于在代码中的特定点中止操作,而不是传递到接受信号的函数中。

语法

js
throwIfAborted()

参数

无。

返回值

无 (undefined)。

示例

以下示例来自规范。

中止轮询操作

此示例演示如何使用 throwIfAborted() 中止轮询操作。

考虑一个异步的 waitForCondition() 函数,它被调用另一个异步函数 func、目标值 targetValue 和一个 AbortSignal。该方法在循环中将 func 的结果与 targetValue 进行比较,并在它们匹配时返回。

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

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

在循环的每次迭代中,我们使用 throwIfAborted() 在操作被中止时抛出信号的 reason(否则什么也不做)。如果信号被中止,这将导致 waitForCondition() promise 被拒绝。

规范

规范
DOM 标准
# ref-for-dom-abortsignal-throwifaborted①

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅