跳转到内容

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() 几乎等效。makeAbortApiAbortController 的区别在于,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 test
signal 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 test
signal test