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① |
瀏覽器相容性
載入中…