async await 轮询超时处理

有这么一个场景 我需要用setInterval获取ajax请求(后端不愿意使用webscoket),我这里发现就是接口处于pending时,还是一直在轮询发送请求,我想做一个优化就是当接口pending了就停止发送,直到后台返回数据了再继续轮询,这个能用async、await解决么?

阅读 7.5k
2 个回答
function sendRequest() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('receive response');
    }, Math.round(Math.random() * 2000));
  })
}

async function runTasks() {
  for (let i = 0; i < 1000; i++) {
    const res = await sendRequest();
    console.log(res);
  }
}

runTasks();

应该就是这个意思吧,等上一个请求完成后再发下一个请求,网络请求用setTimeout模拟。

可以给ajax请求设置timeout, 超时了再重新发送请求。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题