TIPS:本文共有 1733 个字,阅读大概需要 4 分钟。
在网页开发中,使用AJAX技术发送多个请求是很常见的需求,但是在实际应用中可能会遇到一些问题。本文总结了在处理多个AJAX请求时可能遇到的一些常见问题,包括请求并发问题、请求顺序控制、请求之间的依赖关系等。通过对这些问题的分析和解决方法的总结,读者可以更好地理解如何有效地管理和处理多个异步请求,从而提升网页性能和用户体验。本文旨在帮助开发人员更好地应对在实际开发中可能遇到的AJAX请求相关问题,提高开发效率和质量。
我们常常会遇到在一个页面上有多个AJAX请求的情况。这些AJAX请求有可能是互不相关的。也有可能是互相影响的。这里总结一下多个AJAX之间会存在一定影响的情况。
而相互影响的数据也会分为不同的情况。我接触过的主要有:
1.多个AJAX返回的是同一个数据的不同部分。我们需要在前端把这些数据组合成一个完整的数据来运用。我们要知道这些数据的次序来够正确拼接。
2.不同查询条件下的同一组数据。(我们可能需要的是最新的一组数据)。
3.后面的AJAX要用到的前面AJAX的数据。
不考虑应用场景,只说获得AJAX返回顺序的方法。用过的主要有下面几种:
1.递归,在回调函数中执行下一个AJAX。问题是如果中间某一个AJAX没有正常返回,后面的AJAX就有不执行的风险。所以可能需要做一些特别的处理。
2.同步AJAX。 不是很推荐。浏览器分分钟失去响应。严重影响用户体验。
3.方法三.从回调函数上面想办法。可以用闭包来记录当前是第几组的AJAX请求,回调函数中读取。正常发起AJAX请求即可。
4.前后台的协商。对于不需要保证返回顺序。只需要确定所返回结果是对应第几组数据的。 可以AJAX传递当前是第几组数据的标识。后台返回结果的时候再把这个标识返回过来。这样回调函数也能识别到拼装的次序。但是这种情况有限制,对于一些网络公共接口,它返回的数据不是我们能左右的。
其中数据有依赖关系的可选择1,2。
数据无依赖关系但是要知道数据顺序的可使用1,2,3,4。
一些需要多个AJAX场景应用参考:
一、选择查询条件并隔一段时间实时刷新,双如实时显示地图绘制。实时绘制图表等等。后面的数据要刷新前面的数据。比如状态的实时更新。
1.更新了查询条件。中断当前所有AJAX请求。清空AJAX序列的数组。发起AJAX请求。是定时发送请求。隔一段时间发起一次请求。
2.未更新查询条件。隔一段自动刷新数据。理论上我们只需要最新一组数据。
(1)设置超时,超时的时间不要超过请求的间隔。这样当发起新的AJAX的时候。上一个AJAX已经返回结果或者超时取消了。
(2)如果网络条件特别差。超时的时间或两次AJAX请求之间的间隔又比较短的话。如果我们超时时间比请求时间短。那就可能一组数据都拿不下来。页面一直处于发呆状态。。。所以一种方案是不设置超时,能拿下来一组数据是一组数据。拿到数据之后再清除AJAX序列中此请求前面的AJAX请求或者简单点中断当前所有在请求的AJAX。
二、百度地图批量坐标转换。使用的方法三。
详情见上一篇文章《百度地图API五:大批量多次坐标转换结果返回顺序问题》/liusaint1992/article/details/51790777
三。实时地图轨迹。
。。。
其他参考:
1.AJAX中断可自行查询 AJAX的abort()相关方法。
2.我封装的一个JSONP函数参考。实现了error和超时功能。/liusaint1992/article/details/50959571
3.AJAX序列的问题。 把所有的AJAX请求放到一个数组中去,方便控制。类似这样:
[javascript]
varxhr=$.ajax({
url:"__SELF__",
type:"get",
dataType:"json",
cache:false,
data:{stationid:StationID
},
success:function(data){
});
xhrArr.push(xhr);
本文为个人使用总结,有未尽之处,错误之处也是难免。欢迎留言交流。
文章可能会有修改,转载注明出处:/liusaint1992/article/details/51800741
7月1号了,过去一半。今年的目标实现一半了吗?
我们转型不易,新知识内容立足于正能量、实用,觉得《解决多个AJAX请求问题的综合总结》对你有帮助,请留言收藏!