错误兜底(defaultValue)
最终失败(业务错误,或重试耗尽后的超时)时,提供 defaultValue 会吞掉错误并 resolve 兜底值。
typescript
const loader = new AsyncLoader(fetchUser, { defaultValue: defaultUser });
const user = await loader.get(); // 失败时 resolve defaultUser 而非抛错要点
- 显式提供时,falsy 值(
0/""/null/false)同样作为有效兜底。 - 对主动
abort()无效(仍 rejectAbortError)。 - 兜底值不写入缓存,下次
get()会重新加载以获取真实值。
触发兜底的场景
| 场景 | 是否触发 defaultValue |
|---|---|
| 业务错误(重试耗尽后) | ✅ 触发 |
| 超时(重试耗尽后) | ✅ 触发 |
主动 abort() | ❌ 不触发(reject AbortError) |
与 onFulfilled 的关系
触发兜底时 onFulfilled 仍会被调用,result 即为兜底值——成功与兜底对调用方是统一的「成功」语义。