假设有3个函数
function A(){}
function B(){}
function C(){}
A()是主函数;
想在A()里面调用B()和C();
B()是操作Action返回操作结果;
C()为更新界面的函数;
过程为:
A(){
....
C();
B();
}
调试的时候的确是按顺序执行的;
也就是说先执行完了C();再执行B();的.
能得到正确的结果
但是正式运行时却发现B();在C();未执行完就先执行了.
也就是B()更新的是没有C()没有操作过的数据;
求解决.!!!!!!

解决方案 »

  1.   

    setTimeout(function(){B();},5000);用setTimeout延迟加载~·
      

  2.   

    A(){
    ....
    C();
    setTimeout("B()",1);
    }
      

  3.   

    肯定是异步了。楼主调试的时候,不产生真正的网络请求,所以没什么真正的等待时间。实际执行时,则要等待ACTION里向服务器和数据库的请求所返回需要的时间。而代码则是B完就直接C,没在B真正执行完才去执行。要改正的话,应把C放到B里异步执行代码的成功返回回调函数里。或者把B里的异步执行方式变成同步执行方式(大概是请求函数的第三个参数,设为FALSE,具体的查函数语法手册)。