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 可能在后续版本中变更。

Back to Blog

相关文章

阅读更多 »