js 写 ajax 求助....
我用ajax来获取服务器的数据,但是这个数据不可以直接用要和下一个数据联合起来才可以一起用.就像这个样子.functionfun(){vara=getA();//从服务器...
我用ajax来获取服务器的数据,但是这个数据不可以直接用要和下一个数据联合起来才可以一起用.就像这个样子.
function fun()
{
var a = getA();//从服务器获取A.
var webA = getWebA();//从网页获取A;
if(webA != A){
setA(a);
}
}
这样ajax 的异步通信就让我无比蛋疼了.因为浏览器被冻结是绝对不允许发生的所以同步就不可以使用了.但是如果用回调函数又让我的API无比恶心.
因为还有些函数是这样的
function fun()
{
var a = getA();//从服务器获取A.
var A_name = getName(A)//从服务器获取A的姓名...
}
这样子如果要用回调来解决这个问题就要把我的函数切分成3端以上来回调,巨恶心...
各位大侠在下实在没办法的,求指点啊...
更正,更正,不是不允许对getA()的改造,而是不可以把别的函数功能添加到getA()中.
我想通过设立一个全局变量 var A;
然后给getA(fun)添加一个参数,就是一个函数指针.在ajax成功返回后调用原来的函数.
function fun(){
if(!A) A = getA(fun);
else{
var A_name = getName(A);
A = null;
}
}
这样在getA()结束后A就会继续调用getA(fun)函数.来继续执行fun()函数未执行完的部分,各位高手觉得如何.. 展开
function fun()
{
var a = getA();//从服务器获取A.
var webA = getWebA();//从网页获取A;
if(webA != A){
setA(a);
}
}
这样ajax 的异步通信就让我无比蛋疼了.因为浏览器被冻结是绝对不允许发生的所以同步就不可以使用了.但是如果用回调函数又让我的API无比恶心.
因为还有些函数是这样的
function fun()
{
var a = getA();//从服务器获取A.
var A_name = getName(A)//从服务器获取A的姓名...
}
这样子如果要用回调来解决这个问题就要把我的函数切分成3端以上来回调,巨恶心...
各位大侠在下实在没办法的,求指点啊...
更正,更正,不是不允许对getA()的改造,而是不可以把别的函数功能添加到getA()中.
我想通过设立一个全局变量 var A;
然后给getA(fun)添加一个参数,就是一个函数指针.在ajax成功返回后调用原来的函数.
function fun(){
if(!A) A = getA(fun);
else{
var A_name = getName(A);
A = null;
}
}
这样在getA()结束后A就会继续调用getA(fun)函数.来继续执行fun()函数未执行完的部分,各位高手觉得如何.. 展开
2个回答
展开全部
把你的 getA() 和 getName() 封装成一个方法 postHandler ,然后可以把fun()这个方法做为postHandler的回调函数,当然fun()这个方法需要添加两个参数(1个是getA的返回参数,1个是getName的返回参数)。
--------------------------------------------------------------------
//定义方法
function postHandler( callback ){
var a = getA();
var a_name = getName();
callback( a , a_name );
}
//调用
postHandler( fun ) ;
--------------------------------------------------------------------
//定义方法
function postHandler( callback ){
var a = getA();
var a_name = getName();
callback( a , a_name );
}
//调用
postHandler( fun ) ;
更多追问追答
追问
先谢过高手了,不过由于这个程序交互性比较强,是一个用网页来控制设备的项目.
getA() 这个函数要被很多的顶层函数所调用,比如像这样.
function fun(){
var a = getA();
var properity = getProperity(a);
var state = getState(a);
}
看到最长的那个函数有6次 ajax的调用.(-_-|||);
因此对getA()的任何改装都是不被允许的(-_-|||);
追答
一个函数中多次ajax调用,并且都是异步的,那这些ajax请求没有先后顺序吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询