Quantam:轻量级异步工作流引擎(Node.js)
发布: (2026年1月18日 GMT+8 21:11)
3 min read
原文: Dev.to
Source: Dev.to
问题
没有结构化框架时,异步代码往往失控:
- 混乱的 Promise 链 — 几层之后就难以追踪
- 到处都是嵌套的 try/catch — 错误处理分散
- 重试失效 — 手写逻辑常常悄悄失败
- 竞争条件 — 并发任务相互干扰
- 缺少取消机制 — 长时间运行的任务无法停止
- 上下文丢失 — 数据在步骤之间消失
- 行为不可预测 — 相同输入却得到不同输出
解决方案
Quantam 为你提供 一个简洁、流畅的 API 来组合、运行并控制异步工作流:
const result = await quantam()
.step(fetchUser)
.step(enrichUserData)
.parallel([saveToCache, logAnalytics])
.retry(3)
.timeout(5000)
.run(userId);
使用如此简单的语法,你就能轻松处理重试、并行执行、超时和取消,而无需费力。
关键特性
- ✅ 流式 API — 易读易写
- ✅ 串行 & 并行执行 — 任意组合步骤
- ✅ 自动重试 — 包含指数退避
- ✅ 超时 & 取消 — 控制 SLA 与长时间任务
- ✅ 批处理 — 高效运行大量输入
- ✅ 错误传播 — 最后统一捕获错误
- ✅ 确定性 & 可测试 — 相同输入产生相同输出,易于 mock
快速开始
通过 npm 安装:
npm install quantam-async
定义你的异步步骤:
import { quantam } from 'quantam-async';
// 示例异步函数
async function fetchUser(id: string) {
return { id, name: 'Alice' };
}
async function fetchOrders(user: any) {
return { user, orders: [1, 2, 3] };
}
async function enrichData(data: any) {
return { ...data, enriched: true };
}
// 组合并运行管道
const result = await quantam()
.step(fetchUser)
.step(fetchOrders)
.step(enrichData)
.run('user-123');
console.log(result);
// { user: { id: 'user-123', name: 'Alice' }, orders: [...], enriched: true }
并行执行示例
await quantam()
.step(fetchUser)
.parallel([saveToCache, logAnalytics])
.run(userId);
错误处理
try {
await quantam()
.step(riskyOperation)
.run(input);
} catch (error) {
console.error('Pipeline failed:', error.message);
}
取消
const controller = new AbortController();
const promise = quantam()
.step(longTask)
.run(input, { signal: controller.signal });
// 稍后中止管道
controller.abort();
版本
v0.1.0 — 仅包含核心特性。API 可能在后续版本中变更。