介绍
bluebird-retry
是一个基于 bluebird
实现的、用于实现异步重试逻辑的 npm 包。它提供了各种参数配置,使得开发者可以自定义重试次数、间隔时间及相关回调函数。
安装
npm install bluebird-retry --save
使用
基本使用
以下是一个简单的示例代码:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- ----- - -------------------------- -------- --------------- - ------ --- ----------------- ------- -- - -- ------ ----- -------------- - ------------- - ---- -- ---------------- - ---------- -------------- --------- - ---- - --------------- ------- - --- - -------------------- - ---------- - -- ---------- -- ------------------ ------------ -- ----------------------
在上面的示例中,我们使用 retry
函数包裹了 getRemoteData
函数,并传入了一个配置对象,其中 max_tries
参数指定最大重试次数为 3 次。当 getRemoteData
函数返回的 Promise 被拒绝时,retry
函数会根据配置进行相应的重试操作。如果重试次数达到最大限制仍然未成功,则 retry
函数将返回失败状态。
配置项
bluebird-retry
支持以下配置项:
max_tries
:最大重试次数,默认值为 10。interval
:每次重试的间隔时间,可以是一个数字或者一个回调函数。如果是数字,则表示固定间隔时间;如果是回调函数,则该函数将接收一个参数tryCount
,表示当前重试次数(从 1 开始),并返回一个数字,表示当前重试的间隔时间。默认值为 0。backoff
:重试间隔时间的增长率,可以是一个数字或者一个回调函数。如果是数字,则表示每次重试间隔时间都会乘以该数字;如果是回调函数,则该函数将接收一个参数tryCount
,表示当前重试次数,并返回一个数字,表示每次重试间隔时间需要乘以的系数。默认值为 1。predicate
:用于判断是否需要进行重试的回调函数。该函数将接收一个 Error 对象作为参数,并返回一个布尔值,表示是否需要进行重试。默认值为(error) => false
。
自定义间隔时间和重试次数
以下示例代码演示了如何自定义重试次数和间隔时间:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- ----- - -------------------------- -------- --------------- - ------ --- ----------------- ------- -- - -- ------ ----- -------------- - ------------- - ---- -- ---------------- - ---------- -------------- --------- - ---- - --------------- ------- - --- - ----- -------- - -- ----- ------------ - ---------- -- -------- - ----- -- ------ - - -------------------- - ---------- --------- --------- ------------ -- ---------- -- ------------------ ------------ -- ----------------------
在上面的示例中,我们自定义了最大重试次数为 5 次,每次重试的间隔时间逐渐增加 1 秒。
自定义重试条件
以下示例代码演示了如何自定义重试条件:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- ----- - -------------------------- -------- --------------- - ------ --- ----------------- ------- -- - -- ------ ----- -------------- - ------------- - ---- -- ---------------- - - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------