关于解决一个等待异步传输情况下回调处理的问题

来源于:http://gaby.cnblogs.com/

作者:Gaby,昵称:木头

说明:本人能力有限,所有文章均作为自己的学习笔记,如果不对或者不合理的地方, 欢迎留言提出,谢谢支持!

      这文章的题目还真是有点绕啊,其实问题是这样的,我在一个Ajax(A)的回调函数里要做一件事情,但是在做它之前,还有一个Ajax(B)处理,我必须要在B的回调函数处理完成之后再进行A里面的那个操作。不知道这样说大家明白没有。

      我最后的处理方法是这样的,设一个全局变量,如果B里的回调函数处理完就将它设为True。然后在A的回调函数里面将要处理的代码,重构成一个公共函数,切勿不能放在A的回调函数里面,然后在里面调用一下。在这个公共函数里面用一个if判断前面的那个全局变量,如果为true则执行真正的代码,false的话就用setTimeout,做个延迟调用。

      写个小Demo备忘一下:

var flag = false;


//第一个Ajax
var ajax_a_ret = Ajax(path,request,_callbacka);

function _callbacka(){
	B();

}

//真正需要执行的内容
function _do(){
	if(flag){
		//I need to do ...
	}else{
		setTimeout("_do()",1000);//这里的时间最好根据你Ajax请求的估算时间动态调整下,尽量减少这个的循环执行次数
	}
}

//第二个Ajax
function B(){

	var ajax_b_ret = Ajax(path,request,_callbackb);

	function _callbackb(){
		//do somthing..
		flag = true;
	}

}

转载于:https://www.cnblogs.com/Gaby/archive/2009/05/22/1487249.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值