快速入门
AsyncSignal 提供 asyncSignal 与 AsyncLoader 两个模块。前者是可复用的异步信号,后者是封装了加载/缓存/中止/超时/重试的异步数据加载器。
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(); // 中止加载随后继续了解: