跳转到内容

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 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