Ajax 并发回调的顺序问题技术
Ajax 并发请求时,特别是遇到了网络很不稳定的情况下,如何处理回调函数顺序问题。这个问题很难搜索,被某个搜索引擎理解成了 promise 的问题,翻了几页全是关于 Ajax 请求然后再请求然后再请求等等无限下去的写法问题,醉了醉了。
举个?栗子,大家一定就明白了。
某些银行发验证码会写明验证码的序号,这个就是方便短信延迟同时收到很多短信的时候,用户不知道填写哪一个?我讲的就是这个问题。
这个问题虽然在很多搜索提示的时候是必须解决的,当然市面上的网站至少 80% 没有解决,因为搜索提示功能出现这个问题的概率太大了。而我要说的这个问题是在某些情况下,特别是 Ajax 局部刷新的情况下,概率很小的情况下才会发生的,所以这个情况很多时候被忽略了,所以一拖再拖,一直没有时间去做这个东西,而不是不知道解决方法。
最简单的方法当然是接口传参数,这个方法肯定是可行的,但是麻烦阿,需要后端支持阿,能不能更简单一些?
前端应该是可以解决这个问题的,试了下 Jquery 的 Ajax,在 beforeSend 里面的 this 和 callback 里面的 this 都是指向同一个对象,既然 Jquery 的 Ajax 设计能很好的支持,那当然前端就可以解决啦。
看代码:
$.ajax({ "method":"POST", "beforeSend": function(xhr){ s('last_ajax_req',this); }, "url":url, "data":data }) .done(function(r){ if(s('last_ajax_req')===this){ callback(r); } });
在端处通过对象的比较来过滤延迟的 callback,算是不错的方式吧。
好久没有更新了。
暂无