@bearly/pacing

中文文档
0.2.0发布于 2026/09/27MITTypeScriptES Module零依赖近 30 天下载 6526

纯节奏政策:全方位、添加剂和与装饰有关的紧张状态,以及准备就绪的大门

中文使用文档
文档目录3 节
  1. 安装
  2. 使用
  3. 保证

@ bearly/ 间隔

重新连接和重启循环的纯正间隔政策:何时再次尝试,何时一个依赖已经准备好.

这里没有任何东西拥有一个时钟,一个计时器,一个套接字或者一个过程. 你通过 now, (中文(简体) ), sleep你的探测器,在测试中,一个种子 随机源. 模块将常见的焦躁图案和一个备战门放在一个位置,所以每个回路都可以使用 同一个代码.

安装

从 npm 安装; git 安装可解析 TypeScript 源并只在 Bun 下运行 .

bun add @bearly/pacing

使用

import { additiveJitter, awaitReady, decorrelatedJitter, fullJitter } from "@bearly/pacing"

// Full jitter: uniform in [0, min(cap, base * 2 ** attempt)]. A plain spread over a window is base = cap = window.
const delay = fullJitter(250, 30_000, attempt)

// Additive jitter: keep the exponential delay as a floor and spread up to 25% above it, clipped to cap.
const quotaDelay = additiveJitter(60_000, 3_600_000, attempt, 0.25)

// Decorrelated jitter: uniform in [base, min(cap, previous * 3)]; feed back the last delay (base on the first call).
let wait = 500
wait = decorrelatedJitter(500, 30_000, wait)

// Readiness gate: probe until it answers true or the timeout (a duration) passes.
const outcome = await awaitReady(() => daemon.ping(), {
  timeoutMs: 30_000,
  retryMs: 250,
  now: () => Date.now(),
  sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
})
if (!outcome.ready) console.warn(`daemon not ready after ${outcome.waitedMs} ms`, outcome.lastError)

awaitReady 探测器一次,没有睡眠。 然后用装饰相伴而眠 retryMs 财务报告和审定财务报表 maxRetryMs (默认) retryMs * 8),被剪断了,所以它从来没有睡过超时. 最后一个探测器运行在 暂停,以及 ready: false 之后才回来 抛出数为未准备好的探测器,其最后一个错误是 已经返回.

当重试必须至少等待其指数基数时选择添加态焦点, 当整个延迟可以时选择全态焦点 由 0 展开, 当对等方在争论中从先前的延迟中节奏时, 解开相关的焦急 .

探测器必须绑住自己. 门只检查探测器之间的超时,所以一个永远无法解决的探测器 门将永远通过它的时间。 给每个探测器自己的超时 短于 timeoutMs: 呼叫超时 套接字,或一个 AbortSignal.timeout {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}在取货时 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}我...

每个函数投出 RangeError 当它的边框名称不延时(负基、基底下方的上限、分数) 尝试,在 [0, 1] 外的添加剂比,或不是有限数量的约束.

保证

  • 延迟不会超过上限; 添加剂活泼不会降到指数地板下, 装饰活泼永远不会 坠入它的底部.
  • 备战的大门从不睡觉过夜 每个探测器落地时 它都会在超时返回.
  • 没有I/O,计时器或全球. Math.random 是默认的随机源,每个函数都需要替换.

版本与发布记录

@bearly/pacing 共发布 2 个版本,首次发布于 2026/09/25;过去 12 个月发布了 2 个版本。

版本发布日期距今
0.2.0latest2026/09/271 个月前
0.1.02026/09/251 个月前

关于 @bearly/pacing 的常见问题

@bearly/pacing 是什么?

纯节奏政策:全方位、添加剂和与装饰有关的紧张状态,以及准备就绪的大门

如何安装 @bearly/pacing?

在项目目录运行 npm install @bearly/pacing,或使用 pnpm add / yarn add / bun add。

@bearly/pacing 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bearly/pacing 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@bearly/pacing 可以商用吗?

@bearly/pacing 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bearly/pacing 的下载量有多少?

根据 npm 官方下载统计,@bearly/pacing 在 2026/10/08 – 2026/11/06 这 30 天内被下载 6,526 次,日均约 218 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bearly/pacing 还在维护吗?

最新版本 0.2.0 发布于 2026/09/27(1 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/09/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。