js事件执行机制

新手上路,请多包涵

有一段如下vue代码:
created() {
this.interval = setInterval(async () => {

const resp = await api.getNewStatistics();
this.rows = resp.rows;

}, 500);
}
destroyed() {
clearInterval(this.interval);
}

问题1, 由于网络问题或者是服务器端计算问题, 返回速度有点慢, 甚至出现堆积, 我想实现一个函数 setIntervalWaitable(async callback, ms),
只有callback执行完成后, 才会等待ms毫秒, 之后重复调用callback, 怎么实现?
问题2, 现在需求变了, 执行callback后, 程序就会等待500毫秒, 如果500毫秒后, 发现上次的callback已经执行完成, 则立即执行新的callback, 如果没有执行完成, 等执行完上一个callback再自己执行新的callback

阅读 2.5k
1 个回答

直接放个变量判断

created() {
  let isGet = false;
  this.interval = setInterval(async () => {
    if (isGet) return false;
    isGet = true;
    const resp = await api.getNewStatistics();
    isGet = false;
    this.rows = resp.rows;
  }, 500);
},
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题