npm 包 retry-if-fails 使用教程

阅读时长 4 分钟读完

当我们在前端开发中调用后端接口时,难免遇到网络请求失败的情况,这时我们通常会使用 retry(重试) 功能来增加接口的可靠性。在 Node.js 中,有一个非常实用的 npm 包叫做 retry-if-fails,它可以帮助我们轻松地实现请求重试功能。

安装和引入

基本用法

retry-if-fails 是一个非常易于使用的 npm 包,它提供了两个函数,分别是 retryIfFails 和 retryIfFailsAsync。

retryIfFails

retryIfFails 用于同步函数的重试。它的基本用法如下:

-- -------------------- ---- -------
----- ------ - -------------------
  -- -- -
    -- -------
    -- ------------
  --
  -
    -------- --  -- --------- - -
    ------- --  -- --------------------- ------ ----- -
    -------- ------- -------- -- -
      -- ---------
    --
  --
--

retryIfFailsAsync

retryIfFailsAsync 则是用于异步函数的重试。它的基本用法如下:

-- -------------------- ---- -------
----- ------ - ----- ------------------------
  ----- -- -- -
    -- ---------
    -- ------------
  --
  -
    -------- --  -- --------- - -
    ------- --  -- --------------------- ------ ----- -
    -------- ------- -------- -- -
      -- ---------
    --
  --
--

高级用法

自定义判定异常的函数

通过 retries 字段可以控制重试的次数,但是可能会出现重试的次数过多的情况,需要对请求异常做精细地控制。这时可以设置 shouldRetry 函数,它是一个可选的函数,用于在请求失败时确定是否需要重试。

shouldRetry 函数具有如下签名:

  • error: 请求失败时获取到的错误对象
  • attempt: 当前请求的次数,从 1 开始计数

shouldRetry 函数返回 true 表示重试,返回 false 表示不需要重试。

这里我们实现一个自定义 shouldRetry 函数来控制在遇到网络连接被拒绝的情况时只重试一次:

-- -------------------- ---- -------
----- ----------- - --

----- ----------- - ------- -------- -- -
  -- ----------- --- -------------- -- ------- - ------------ -
    ------ -----
  -
  ------ ------
--

----- ------ - -------------------
  -- -- -
    -- -------
    -- ------------
  --
  -
    -------- --
    ------------
    ------- --
    -------- ------- -------- -- -
      -------------- ---------- --------------------
    --
  --
--

其他选项的详解

retries

retries 控制请求失败时的重试次数,它的默认值是 3 次。当 retries 设为 0 时表示关闭重试功能。

factor

factor 控制重试的时间间隔,默认是 2 倍上一次重试的时间间隔。一般 factor 的值应该大于等于 1。

如果不想设置固定的时间间隔而是想使用指数级递增的时间间隔,可以使用 theorecticalDelay 字段。theorecticalDelay 用于表示每次重试后的最小时间间隔,而实际的时间间隔会在这个基础上进行微小的调整。theorecticalDelay 的默认值是 1000 毫秒。

onRetry

onRetry 是每次请求失败后的回调函数。它具有如下签名:

  • error: 请求失败时获取到的错误对象
  • attempt: 当前请求的次数,从 1 开始计数

它可以用于在请求失败时输出特定的日志,方便跟踪问题。

总结

retry-if-fails 是一个简单易用的 npm 包,它能帮助我们轻松地实现请求重试功能。我们可以在使用它的基础上进一步实现自己的异常处理逻辑,提高前端代码的可靠性和健壮性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b5951ab1864dac66ecb

纠错
反馈