“可恶”的ajax 同步请求
因为这个原因,浪费了我好几个小时.
在工作中碰到这样的需求:
后续的方法必须等待前置任务完成后方可去执行,否则后续方法无法取到前置任务生成的数据.
而前置任务当中使用到了ajax请求向后台请求一些数据,供后续方法使用.
开始的想法:
function load(){
前置任务(); //使用了ajax请求,并设置了异步为false.
后续任务(); //读取前置任务返回的数据
}
现象:
FF:一切正常,偶尔有点小问题,得到不到数据
IE:无法获取数据
总结原因:
对ajax的同步请求,与程序的中断概念不清.
ajax的同步请求,并不会中断当前程序的运行.
解决方案:
//定义一全局变量,数量为当前页面共发出的ajax请求数量
var requestCount = 1;
function load() {
/*
使用了ajax请求,并设置了异步为false.
在ajax回调函数中,将requestCount--
确保所有请求数据最后为0;
*/
前置任务();
//执行后续方法
latter();
}
function latter() {
/*
如果请求数量为0,代表当前所有ajax请求已完成
那可以进行后续任务,否则使用定时器,每隔500毫秒
去重新执行一次这个方法
*/
if (requestCount == 0) {
//读取前置任务返回的数据
后续任务();
}else{
window.setTimeout("latter()",500);
}
}
分享到:
相关推荐
extjs ajax同步请求所需js extjs ajax同步请求所需js
下面小编就为大家分享一篇解决js ajax同步请求造成浏览器假死的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
extjs3.0 ajax 同步请求
ajax 同步请求和异步请求的差异分析,需要的朋友可以参考下。
这是一个对Ext中的AJAx进行扩展了的方法,使其可以支持同步访问
但是对于h5的ajax请求并没有提供干涉的接口,这意味着我们不能在webview中干涉javascript发起的http请求,而有时候我们确实需要能够截获ajax请求并实现一些功能如:统一的网络请求管理、cookie同步、证书校验、访问...
一个完整的jquery+ajax传送请求的实例
jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现
主要介绍了SpringBoot+SpringSecurity处理Ajax登录请求问题,本文给大家介绍的非常不错,具有参考借鉴价值,需要的朋友可以参考下
打包好的Ajax代码,实现了对象化,使用时直接调用就可以了,调用时需要重构三个方法,如下: function onerror() //错误处理方法 { alert("error"); } function getInfo() //发送请求方法,包括请求方法和请求...
Ajax异步请求分页
下面小编就为大家带来一篇浅谈js的ajax的异步和同步请求的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
基于ajax方式的跨域请求jsonp的前后台代码
jQuery-ajax-用户名异步请求,转载请注明出处:https://blog.csdn.net/qq_40374604(如有需要欢迎留言,我一定会尽快解答)
使用Ajax get请求数据的小例子,使用$.each()循环显示到表格,里面有接口,大家可以使用,欢迎指导学习
Js 拦截全局ajax请求
Ajax异步请求!PRIVATE。
NULL 博文链接:https://linwei-211.iteye.com/blog/1567277
chrome扩展插件获取ajax请求记录