Skip to content

错误兜底(defaultValue)

最终失败(业务错误,或重试耗尽后的超时)时,提供 defaultValue 会吞掉错误并 resolve 兜底值。

typescript
const loader = new AsyncLoader(fetchUser, { defaultValue: defaultUser });

const user = await loader.get(); // 失败时 resolve defaultUser 而非抛错

要点

  • 显式提供时,falsy 值(0 / "" / null / false)同样作为有效兜底。
  • 对主动 abort() 无效(仍 reject AbortError)。
  • 兜底值不写入缓存,下次 get() 会重新加载以获取真实值。

触发兜底的场景

场景是否触发 defaultValue
业务错误(重试耗尽后)✅ 触发
超时(重试耗尽后)✅ 触发
主动 abort()❌ 不触发(reject AbortError

与 onFulfilled 的关系

触发兜底时 onFulfilled 仍会被调用,result 即为兜底值——成功与兜底对调用方是统一的「成功」语义。

基于 MIT 许可协议发布