前言
在前端开发中,经常会遇到需要轮询接口数据的情况。很多时候我们并不知道轮询多少次能够拿到有效数据,如果我们不加以限制,就有可能使请求太频繁,造成服务器的压力增大,浪费带宽资源。
在这时,一个能够进行轮询控制,能够在必要时停止轮询请求的npm包就显得尤为重要。这里我介绍一个npm包,cancellable-promise-polling,它能够在一个Promise上进行轮询,并支持取消Promise。下面我将详细介绍如何使用它。
安装
cancellable-promise-polling是一款npm包,可以通过以下命令进行安装:
npm install cancellable-promise-polling
使用
使用它非常简单,只需要通过 poll
函数来创建轮询Promise即可。 poll
函数接收两个参数:
pollingFn
(Function(required)): 每次轮询执行的方法。interval
(Number(required)): 轮询时间间隔。
下面是一个例子:
import { poll } from 'cancellable-promise-polling'; const pollingFn = () => fetch('example.com/api/getData'); const interval = 3000; poll(pollingFn, interval) .then(data => console.log(data)) .catch(error => console.error(error));
在该例子中,每隔3秒轮询一次 example.com/api/getData
接口并返回请求结果。返回结果通过 then
方法进行获取,错误通过 catch
方法进行捕获。
取消轮询
如果我们想在某个时间点取消轮询Promise,那么cancellable-promise-polling包也支持该功能。我们需要使用 cancel
函数来停止轮询Promise。下面是一个例子:
-- -------------------- ---- ------- ------ - ----- --------------- - ---- ------------------------------ ----- --------- - -- -- --------------------------------- ----- -------- - ----- ----- - -------- ------ - - -------------------------- ---------- ------------------ ------- ------- ---------- -- ------------------ ------------ -- ----------------------
在上例中,我们使用 cancellablePoll
函数代替 poll
函数来创建Promise。我们在Promise开始轮询后,设置一个15秒后的超时操作,调用 cancel
函数来停止Promise轮询。promise 结果可以像之前那样通过 then
方法获取,错误也可以通过 catch
方法捕获。
需要注意的是,cancellablePoll
函数返回两个对象,其中 promise
为轮询Promise的实例, cancel
为停止Promise轮询的方法。
总结
cancellable-promise-polling npm包是一款实用的工具,能够帮助我们简化轮询请求的操作,并且还支持在必要时停止轮询请求。 如果你在项目中需要进行轮询的操作,那么cancellable-promise-polling npm包就可以提供良好的帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006735a890c4f7277583ed1