是这样, 我在浏览器端发送Ajax请求给后台的DWR但是因为业务的需要,请求是分两次发送到后台的而两次请求返回后的JS处理函数是不同的两个~如果一个请求返回以后,浏览器正在执行其处理函数这时候第二个请求返回了,浏览器会怎么做呢?是不是会等第一个请求处理函数结束后再执行另一个请求处理函数呢?关于两个请求处理函数中是否涉及到需要互斥的操作之类的问题先不考虑~谢谢大家

解决方案 »

  1.   

    这个不用考虑吧,AJAX本来就是异步的,至于两个请求同时返回浏览器会先处理哪一个,我们是无法控制的。
    反正它会给你一一处理好,不会给你带来错误的。
    如果你想让两个处理函数分先后执行的话,我也不知道怎么搞,
    最好就是把函数写好一点,不管哪个先执行都不会带来错误结果
      

  2.   

    可以加个setTimeout计时
    比如默认有个全局变量 isFna = 0
    a数据返回执行完相应函数后设置 isFna = 1
    b数据返回后的函数开始这样
    function bFn(data){
       if(!isFan){
    var my = arguments.callee;
    setTimeout(function(){ my(data) }, 1000);
    return;
    }
    }
      

  3.   

    ajax也可以同步执行,open方法中的最后一个参数传false即可.这样,当第一次调用没有执行完毕,第二次是不会执行的.
      

  4.   

    建议楼主使用 Jquery,这个工具是JavaScript的封装体。 Ajax本身就支持异步操作,不会存在排斥的问题。呵呵
      

  5.   

    我是想问我在页面上发送了两次Ajax请求,都是异步的第一次请求的处理方法是A第二次请求的处理方法是BA方法执行时间需要1秒B方法执行时间需要0.5秒返回的时候A方法执行到一半的时候,第二次请求的结果也回来了这个时候浏览器是如何处理的?是A方法中断,执行B方法,还是A方法执行完再执行B方法或者是A与B轮流执行一个时间片??
      

  6.   

    我认为如果两个方法所使用的xmlhttp对象是一个的话就会出现问题
    a方法还没有执行完毕,b方法的responsetext就回来了,会使a方法停止
      

  7.   

    汗,这个问题还没有解决吗?刚随着Google进来了,发现还没解决...
      

  8.   

    正解    刚好我也是在太一个JAVA后台类里面调用了两次   设置为FLASH之后就会一个一个执行  
      

  9.   


    如果是相同的一个ajax对象,a不会被执行,仅会执行b.
    因为在用第二次open后,ajax的回调函数指针已经指向b.
    如果是不同的对象,及每次open都new一个对象,则a和b都会被执行.
      

  10.   

    如果你的两个请求有明确的先后顺序要求,那么请调用ajax的时候使用异步操作的方式。即完成一个之后再做另一个。
    如果没有明确的先后顺序的要求,那么不用做任何处理,。