created() {
this.interval = setInterval(async () => {
const resp = await getNewStatistics();
this.rows = resp.rows;
}, 500);
}
destroyed() {
clearInterval(this.interval);
}
其中getNewStatistics()是访问后端的异步操作
- 发现异步操作getNewStatistics()返回速度有点慢, 导致操作出现堆积, 现要求实现一个函数
setIntervalWaitable(callback, ms)
代替上述代码中的setInterval
,要求异步函数callback完成后,等待ms的时间,再重新执行callback - 将1中的
setIntervalWaitable
函数的行为修改为如下方式该怎么实现:
- 等待传入的ms时间,如果此时callback已经完成,重新执行callback
- 否则,等待callback完成,之后立刻重新执行callback
- (选答)为上面实现的setIntervalWaitable函数提供一个可停止实现,用于代码中的destroyed()方法当中
看着是个
setInterval
,实际是个setTimeout
。测试结果(模拟 AJAX 请求阻塞 5 秒,上一次请求结束后等 5 秒再开始下一次,即 5+5=10):