`
amcucn
  • 浏览: 293780 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

“可恶”的ajax 同步请求

阅读更多

可恶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);
    }
}

 

 

 

1
1
分享到:
评论
4 楼 alen252 2015-01-22  
同步请求不是回执行完,再接着往下走么?不然怎么叫同步。
3 楼 amcucn 2009-09-28  
wdw8217 写道
如同现实中雇人管理一样,弄一个线程去等待。学java就是得学会线程才算入门的

在Java里,我会,但是在JS里还真没见过线程!请指教!
2 楼 picksun 2009-09-26  
刚出是偶,用了别人的机~
罪过,罪过!
1 楼 wdw8217 2009-09-26  
如同现实中雇人管理一样,弄一个线程去等待。学java就是得学会线程才算入门的

相关推荐

    解决js ajax同步请求造成浏览器假死的问题

    总结一下,解决js ajax同步请求造成浏览器假死的问题的关键在于理解浏览器单线程的特性及其在执行同步请求时会阻塞UI线程的行为。开发者可以通过使用异步请求或将耗时的请求操作放入setTimeout等JavaScript定时器中...

    extjs ajax同步请求所需js

    标题中提到的"extjs ajax同步请求所需js"是指ExtJS框架中用于执行同步Ajax请求的相关JavaScript代码。在ExtJS中,Ajax请求通常通过`Ext.Ajax`对象来实现。与传统的异步请求不同,同步请求会阻塞浏览器,直到请求完成...

    extjs3.0 ajax 同步请求

    ### ExtJS 3.0 AJAX 同步请求详解 #### 一、引言 ExtJS 是一款基于 JavaScript 的开源框架,用于构建现代化的 Web 应用。它提供了丰富的 UI 组件以及强大的数据处理能力,使得开发者能够快速地开发出高质量的企业...

    Ext.Ajax.request2.x实现同步请求

    本文将详细解析如何利用`Ext.Ajax.request`实现同步请求,并探讨其背后的原理和注意事项。 首先,我们需要理解Ajax的本质,它是Asynchronous JavaScript and XML的缩写,虽然现在XML已不再是主要的数据交换格式,但...

    ajax 同步请求和异步请求的差异分析

    - 在同步请求中,`conn.open()`的第三个参数设置为`false`,这表示发送请求后,浏览器会阻塞其他脚本的执行,直到服务器返回响应。也就是说,当调用`conn.send(param)`时,浏览器会等待服务器的响应,期间用户界面...

    SpringBoot+SpringSecurity处理Ajax登录请求问题(推荐)

    SpringBoot+SpringSecurity处理Ajax登录请求问题 SpringBoot+SpringSecurity处理Ajax登录请求问题是SpringBoot开发中的一個常见问题,本文将详细介绍如何使用SpringBoot+SpringSecurity处理Ajax登录请求问题。 ...

    浅谈js的ajax的异步和同步请求的问题

    在讲解JavaScript中的Ajax技术时,经常会遇到异步和同步请求的问题。本文旨在深入探讨这一问题,并通过实例代码说明在Ajax调用中如何控制这两种请求方式。 Ajax(Asynchronous JavaScript and XML)是一种在无需...

    ext-basex.js 进行Ext.Ajax.request 同步请求 FF无法正常

    标题提到的"ext-basex.js进行Ext.Ajax.request同步请求 FF无法正常"问题,涉及到浏览器兼容性和异步/同步请求的理解。 `Ext.Ajax.request`是ExtJS中的一个方法,用于发起Ajax(异步JavaScript和XML)请求。它可以...

    实例详解Android Webview拦截ajax请求

    通过这种方式,我们就可以截获 Ajax 请求,并实现统一的网络请求管理、Cookie 同步、证书校验、访问控制等功能。 * Android Webview 拦截 Ajax 请求 * JavaScript Bridge:DSBridge * HTTP 请求库:Fly.js * ...

    Ext AJAx的同步请求方法

    这是一个对Ext中的AJAx进行扩展了的方法,使其可以支持同步访问

    ExtJs Ajax 同步问题

    但是,同步请求可能导致页面卡顿,因为浏览器会阻塞其他JavaScript代码的执行,直到请求完成。因此,除非必要,一般推荐使用异步请求。 在描述中提到的博客链接可能详细解释了遇到的特定问题和解决办法,但由于无法...

    jquery封装下的ajax同步加载代码实例

    通过分析这个文件,你可以更深入地理解jQuery如何封装AJAX同步请求,并了解如何在实际项目中应用。 记住,虽然同步请求有时是必要的,但它们会阻塞浏览器直到请求完成,可能导致用户界面冻结。因此,除非绝对必要,...

    一个完整的jquery+ajax传送请求的实例

    本文将深入探讨一个完整的jQuery+AJAX传输请求的实例,旨在帮助开发者理解如何有效地使用这两种技术实现异步数据通信。 首先,jQuery是一个强大的JavaScript库,它为DOM操作、事件处理、动画效果和Ajax交互提供了...

    jQuery-ajax-用户名异步请求

    在Web开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理以及Ajax交互。本主题聚焦于jQuery中的Ajax功能,特别是如何利用它进行异步用户名验证。Ajax,即Asynchronous JavaScript and ...

    解决ajax请求后台,有时收不到返回值的问题

    jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现

    Ajax异步请求的验证

    同步请求会阻塞浏览器,直到请求完成,而异步请求不会。异步请求允许用户在等待响应的同时继续操作页面,提高了用户体验。 七、总结 Ajax异步请求的验证涉及多个方面,包括请求状态的检查、数据解析、错误处理以及...

    ajax异步请求小结

    **Ajax异步请求小结** Ajax(Asynchronous JavaScript and XML)是一种用于创建快速、动态网页的技术,它允许在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。这种技术极大地提升了用户体验,...

    Ajax异步请求

    Ajax异步请求 Ajax异步请求是一种基于JavaScript和XMLHttpRequest对象的技术,允许Web应用程序在不刷新整个页面的情况下,更新页面的一部分内容。它可以实现异步通信,提高用户体验和页面加载速度。 在Ajax异步...

    Js拦截全局ajax请求

    在JavaScript开发中,有时我们需要对全局的Ajax请求进行拦截,以便进行统一的处理,比如添加统一的错误处理、数据格式化、性能监控等。这种需求通常可以通过“Ajax Hook”技术来实现。Ajax Hook允许我们捕获并修改...

Global site tag (gtag.js) - Google Analytics