关于ajax数据窜的问题?

有一个ajax轮询,每隔5秒钟发送一次请求,先发送请求A,5秒后再发送请求B,如果A请求的返回数据比较慢,B返回了数据A才返回,这时A返回的数据会覆盖B返回的,这个怎么处理?才能不覆盖

阅读 2k
3 个回答

一个笨办法...
在全局区域內或者 storage 里记录一个当前显示的数据的请求时间
每次请求,记录下当前请求的时间,当请求响应完成时,把这次请求的请求时间和上面说的时间对比,如果小于,就抛弃,如果大于,就更新为当前请求的请求时间,并渲染数据.

请求的时候生成一个唯一id,存入等待请求的变量中,这个变量只存最新的id。
请求时将id传入作用域中,当请求返回执行回调时,先用id去跟等待请求的变量匹配,匹配上了才做下一步处理。

请求回来才发下一次请求呗.
或者每次发请求前,abort前一次请求.

const sleep = time => new Promise(resolve => setTimeout(resolve, time));

async function loop() {
    while(loop_flag) {
        await sleep(5000);
        await request();
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题