allx
package version >0.3.0
shadcn any version
author: cmtlyt
update time: 2026/04/01 16:07:21
allx 是一个支持自动依赖优化和完整类型推断的 Promise.all 增强版工具。它能够智能地处理任务之间的依赖关系,自动优化执行顺序,支持并行执行和链式依赖。
特性
- 自动依赖解析:自动识别任务间的依赖关系,按最优顺序执行
- 完整类型推断:提供完整的 TypeScript 类型支持
- 并行执行:独立任务并行执行,提升性能
- 错误处理:支持 allSettled 模式,即使部分任务失败也能获取所有结果
- 灵活的输入:支持函数、Promise、普通值等多种输入类型
- 链式依赖:支持复杂的多层依赖关系
install
npm
shadcn
usage
基础用法
简单并行任务
混合同步和异步任务
非函数任务
任务依赖
基础依赖
通过 `this. 访问其他任务的结果:
多任务依赖
链式依赖
错误处理
默认行为
默认情况下,任何任务失败都会导致整个 Promise.reject:
allSettled 模式
使用 allSettled: true 选项,即使部分任务失败也能获取所有结果:
使用场景
数据获取
配置加载
并行 API 调用
API
allx(tasks, options?)
执行多个任务,自动处理依赖关系。
参数
-
tasks:
Record<string, AnyFunc | Promise<any> | any>- 任务对象,键为任务名,值为任务函数、Promise 或普通值
- 任务函数中可以通过 `this. 访问其他任务的结果
-
options?:
AllxOptions- allSettled?:
boolean- 是否使用 allSettled 模式,默认为
false - 启用后,即使部分任务失败也会返回所有任务的结果
- 是否使用 allSettled 模式,默认为
- allSettled?:
返回值
- 返回值:
Promise<AllxResult<M, O>>- 当
allSettled为false时,返回所有任务的结果对象 - 当
allSettled为true时,返回包含每个任务状态的PromiseSettledResult对象
- 当
类型定义
最佳实践
1. 合理使用依赖
只在实际需要依赖时才使用 `this.,避免不必要的依赖链:
2. 使用 allSettled 处理容错场景
当需要处理可能失败的任务时,使用 allSettled 模式:
3. 避免循环依赖
循环依赖会导致死锁,设计任务时要避免:
注意事项
- 任务执行顺序:
allx会自动优化执行顺序,有依赖的任务会等待依赖完成后执行 - 错误传播:默认模式下,任何任务失败都会导致整个 Promise.reject
- 类型安全:TypeScript 会自动推断返回类型,确保类型安全
- 性能优化:独立任务会并行执行,充分利用异步能力
- Symbol 键名:支持使用 Symbol 作为任务名,但访问时需要注意类型