npm 包 insistence 使用教程

阅读时长 4 分钟读完

简介

insistence 是一个前端开发时常用的 npm 包,用于重试请求。在实际开发中,网络请求不可避免地会出现失败的情况,而这时候可以用 insistence 来帮助我们重新发起请求,直到请求成功为止。

安装

在终端中输入以下命令进行安装:

使用

使用 insistence 前需要先引入它:

基础使用

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

在上述例子中,我们创建了一个 Insistence 实例,并通过 attempt 方法发起了一个请求。如果请求失败,Insistence 会在指定的延迟时间过后重试请求,直到请求成功或者达到最大重试次数。

retrydelay 可以根据需求对其进行调整。

自定义判断请求是否成功的方法

默认情况下,Insistence 会判断请求是否成功的方法是判断请求是否返回 status code 为 2xx,但在实际开发中,我们可能需要根据其他条件来判断请求是否成功。这时候,我们可以通过传递 isSuccess 方法来自定义规则:

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

自定义重试延迟时间

Insistence 默认的延迟时间是 1000 毫秒,但在实际开发中,我们可能需要根据实际情况来调整延迟时间。这时候,我们可以通过传递 calculateDelay 方法来自定义计算延迟时间的规则:

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

总结

Insistence 是一个非常实用的 npm 包,可以帮助我们在网络请求失败时自动重试请求,并且提供了丰富的自定义选项,非常适用于实际开发中的网络请求场景。

示例代码

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

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

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

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

纠错
反馈