Skip to content

快速入门

AsyncSignal 提供 asyncSignalAsyncLoader 两个模块。前者是可复用的异步信号,后者是封装了加载/缓存/中止/超时/重试的异步数据加载器。

asyncSignal:一个可复用的信号

类似 Promise.withResolvers(),但可被反复 reset 复用,并能手动 resolve / reject:

typescript
import { asyncSignal } from "asyncsignal";

const signal = asyncSignal();

// 等待信号 resolve 或 reject
await signal();

// resolve 信号
signal.resolve("resolved value");

// 或 reject 信号
signal.reject(new Error("rejected error"));

随后继续了解:

AsyncLoader:带缓存与重试的加载器

构造函数第一个参数是底层加载函数,通过 args.abortSignal 接收合并后的中止信号:

typescript
import { AsyncLoader } from "asyncsignal/loader";

const loader = new AsyncLoader(async (args) => {
    const r = await fetch("/api/data", { signal: args.abortSignal });
    return await r.json();
});

const data = await loader.get(); // 获取结果(命中有效缓存则直接返回)
loader.abort(); // 中止加载

随后继续了解:

下一步

基于 MIT 许可协议发布