前端开发中:对一个Api接口进行轮询调用,如何保证总能获取最后一次调用Api的返回结果?

snowsherry
  • 1
新手上路,请多包涵

前端开发中:对一个Api接口进行轮询调用,如何保证总能获取最后一次调用Api的返回结果?

评论
阅读 3.1k
4 个回答

每次调接口的时候,加一个时间戳,成功回调 / Promise的resolved里面,判断时间戳是不是最新的。

let Api = {
    recent: 0,
    ajax(params, callback){
       // 保存一个time
       let time = (this.recent = (new Date()).getTime());
       return $.get(params, complete: (data) => {
           callback(data, time);
       }); 
    },
}

// 使用
Api.ajax(params, (data, time) => {
    if(time === Api.time){
        // 说明是最新一次调用的返回,可以正常处理数据
    }
});

防抖:一个需要频繁触发的函数,在规定时间内,只让最后一次生效,前面的不生效。

1.给请求设置一个flag 请求前判断flag 不可以请求就return 然后改变flag 请求结束后再把flag改回去 类似防重复点击一样
2.防抖函数 保证函数一段时间内执行一次
3.现在的请求库都应该有手动终止的方法 每次发出新的请求之前把上一个请求终止掉

你可以将请求中的url缓存起来, 完了跳出缓存, 每次请求先检查是否在缓存中, 是的话取消上一次的请求, 再执行新的请求.
关于如何取消请求 我就不赘述了, 看链接: https://blog.csdn.net/wopelo/...

宣传栏