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 的浏览器中加载。