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① |
浏览器兼容性
加载中…