rong_abort
AbortController 与信号
本页 API 参考由仓库内的英文文档生成,暂仅提供英文版。
AbortController & AbortSignal
Web-standard cancellation mechanism for aborting async operations.
Basic Usage
const controller = new AbortController();
const signal = controller.signal;
// Pass signal to async operations
fetch(url, { signal });
// Abort
controller.abort();
controller.abort("custom reason");
AbortSignal
signal.aborted; // boolean
signal.reason; // abort reason
signal.throwIfAborted(); // throws reason if aborted
signal.onabort = (event) => {
console.log("aborted");
};
Static Methods
// Create already-aborted signal
const signal = AbortSignal.abort("reason");
// Auto-abort after timeout
const signal = AbortSignal.timeout(5000); // 5 seconds
// Abort when any signal fires
const signal = AbortSignal.any([signal1, signal2]);
With fetch
const controller = new AbortController();
setTimeout(() => controller.abort(), 5000);
try {
const response = await fetch(url, { signal: controller.signal });
const data = await response.json();
} catch (e) {
if (e.name === "AbortError") {
console.log("request cancelled");
}
}