makeAbortApi
makeAbortApi
函数用于创建中止信号及其相关的中止函数。
导入
import { makeAbortApi } from "@tai-kun/surrealdb/utils";
使用方法
function makeAbortApi(signal?: AbortSignal): [ signal: AbortSignal, abort: (reason?: unknown) => void,];
参数
signal
关联的中止信号。
返回值
返回一个包含以下两项的数组:
signal
中止信号,初始状态为未中止。
abort
向中止信号发送 "abort"
事件。可选地,可以接收一个参数 reason
,用于通过 "abort"
事件传递中止原因。
示例
以下示例演示了不带参数创建 Abort API 的方法:
import { makeAbortApi } from "@tai-kun/surrealdb/utils";
const [signal, abort] = makeAbortApi();abort();
上述示例与 new AbortController()
几乎等效。与 AbortController
的区别在于,makeAbortApi
返回的是数组而不是对象。
以下示例演示了指定关联中止信号创建 Abort API 的方法:
import { makeAbortApi } from "@tai-kun/surrealdb/utils";
const controller = new AbortController();controller.signal.addEventListener("abort", function() { console.log("controller.signal", this.reason);});
const [signal] = makeAbortApi(controller.signal);signal.addEventListener("abort", function() { console.log("signal", this.reason);});
controller.abort("test");
输出:
controller.signal testsignal test
中止事件会从 Abort API 中止后传播到关联的中止信号:
import { makeAbortApi } from "@tai-kun/surrealdb/utils";
const controller = new AbortController();controller.signal.addEventListener("abort", function() { console.log("controller.signal", this.reason);});
const [signal, abort] = makeAbortApi(controller.signal);signal.addEventListener("abort", function() { console.log("signal", this.reason);});
abort("test");
输出:
controller.signal testsignal test