用于定时执行异步任务,调用方式类似原生 setInterval。 项目地址
安装
1 | npm install set-promise-interval |
使用
1 | // const { default: setPromiseInterval, clearPromiseInterval } = require('set-promise-interval') |
特性
尽量保持间隔
1 | setPromiseInterval(somePromiseFun, 3000) |
- 假设上次 somePromiseFun 的执行用了 1 秒,那下次的执行只会间隔 2s
- 假设上次 somePromiseFun 的执行用了 4 秒,会立即执行下次
- 首次会立即执行,原生 setInterval 需要等 3 秒
也就是说插件不会傻乎乎地在上次异步任务结束后严格等待你传入的那个间隔数,而是会尽量贴近它。
尽量早地「结束」
1 | function test() { |
上面代码启动了一个3秒的定时器,而异步任务本身耗时为1秒。
然后我在2秒钟时调用结束定时任务,这时已经没有实际任务在执行了,所以 clearPromiseInterval
会立刻 resolve,而不是1秒后。
换句话说,clearPromiseInterval
只会等待正在进行的异步任务,一旦异步任务结束了,它就 resolve。