tryCall
package version >0.4.0
shadcn any version
author: cmtlyt
update time: 2026/04/07 11:16:55
提供安全的函数调用机制,支持错误捕获、默认值回退和回调处理。
特性
- 安全调用: 自动捕获函数执行过程中的错误
- 默认值回退: 提供错误处理函数返回默认值
- 异步支持: 同时支持同步和异步函数
- 回调机制: 支持最终回调处理执行结果
- 上下文绑定: 正确处理函数的
this上下文 - 类型安全: 完整的 TypeScript 类型支持
安装
npm
shadcn
用法
基础用法
简单调用
错误处理
使用 tryCallFunc 包装函数
高级用法
回调处理
上下文绑定
不处理错误的情况
错误传播
执行顺序
API Reference
tryCall
尝试调用一个函数并处理可能的错误。
参数
返回值
函数的执行结果或错误处理函数返回的默认值。类型为 TryCallResult<R, E>。
tryCallFunc
包装一个函数,返回一个拦截错误的新函数。
参数
返回值
返回一个新函数,该函数接收与原函数相同的参数,并返回 TryCallResult<R, E>。
类型定义
TryCallResult<R, E>: 函数返回值类型,支持同步和异步TryCallResultValue<R, E>: 解析后的结果值类型TryCallFinalArgs<R, E>:onFinal回调接收的参数类型
使用场景
API 请求错误处理
配置解析
DOM 操作
数据转换
最佳实践
1. 为错误提供有意义的默认值
2. 使用 tryCallFunc 包装需要多次调用的函数
3. 利用 onFinal 进行统一处理
4. 区分同步和异步错误处理
5. 保持错误处理函数简单
注意事项
⚠️ 错误处理
- 如果不提供
onError参数,函数执行过程中的错误会被抛出 - 对于异步函数,如果不提供
onError,错误会以 rejected Promise 的形式抛出 - 对于异步函数,提供
onError后,错误会被捕获并转换为 resolved Promise onError中抛出的错误会覆盖原始错误onFinal中抛出的错误会覆盖所有之前的错误
⚠️ 类型检查
cb参数必须是函数类型,否则会抛出TypeError- 类型系统会在编译时检查函数参数和返回值的类型
⚠️ 执行顺序
- 同步函数:执行函数 → onError(如果有错误)→ onFinal
- 异步函数:执行函数 → 等待 Promise → onError(如果有错误)→ onFinal
onFinal总是会被调用,无论成功或失败onFinal接收的参数优先级:errorResult > error > oriResult
🔧 执行机制
- 函数调用时会自动处理
this上下文绑定 - 异步函数的错误会被自动捕获并转换为 Promise 结果
onFinal回调会在函数执行完成后被调用,无论成功或失败
⚠️ 使用限制
- 适用于需要安全调用可能抛出错误的函数的场景
- 适用于需要为错误提供默认值的场景
- 适用于需要在函数执行后进行统一处理的场景
- 不适用于需要复杂错误处理逻辑的场景,建议使用 try-catch 块