API 参考
构造函数
typescript
new AsyncLoader<T, M = Record<string, any>>(
loader: IAsyncLoader<T, M> | IAsyncLoader<T, M>[],
options?: AsyncLoaderOptions<T, M>
)loader:底层加载函数(单个或数组),通过args.abortSignal接收合并后的中止信号;可返回Promise<T>或同步值T。多 loader 时配合multiLoaderStrategy编排(见 多加载器)。options:构造选项,详见 配置选项。
实例方法
| 方法 | 说明 |
|---|---|
get(args?) | 获取加载结果;首次/缓存失效/上次失败时自动触发加载。args 透传给内部 signal(timeout 为等待超时,与 options.timeout 加载超时语义不同) |
load() | 触发一次加载(通常无需手动调用,get() 会自动触发) |
refresh(args?) | 强制重新加载,忽略有效缓存;若有进行中加载先中止,再重新加载并返回新结果。args 透传给内部 signal |
invalidate() | 标记数据失效:清除缓存项并重置已完成的信号,使下次 get() 重新加载。不立即触发加载。与 clear() 不同,无缓存(cache=0)时也生效 |
abort() | 中止加载,穿透到底层请求;处于重试等待中时一并终止 |
clear() | 清除当前实例的缓存项 |
clearAll() | 清空共享存储中的全部缓存项 |
isPending() | 是否正在加载中(含重试过程),以 loading 为准 |
isFulfilled() | 是否加载成功(含 defaultValue 兜底) |
isRejected() | 是否加载出错(业务错误 / 超时 / abort) |
静态方法
| 方法 | 说明 |
|---|---|
AsyncLoader.resolve(result) | 创建预置 fulfilled 实例:get() 直接返回 result,不触发加载(详见 静态方法) |
AsyncLoader.reject(error) | 创建预置 rejected 实例:get() 直接抛出 error,不触发加载(详见 静态方法) |
AsyncLoader.clearLoaderCache() | 清空 multiplex 进行中实例缓存表;主要用于共享 hash 的测试用例间隔离 |
实例属性
| 属性 | 说明 |
|---|---|
signal | 内部承载结果的 IAsyncSignal,可观察状态与 result / error |
loading | 是否正在加载(含重试过程) |
loader | 底层加载函数(单个或数组,构造函数第一个参数) |
hash | 缓存/复用键(显式提供或自动生成) |
options | 合并默认值后的构造选项 |
错误类型
| 触发场景 | 错误类型 |
|---|---|
| 超时最终失败(重试耗尽或未启用重试) | TimeoutError |
主动 abort() / 外部 abortSignal | AbortError |
| 业务错误 | 透传原始错误 |