js中的sleep

近期写js代码的时候,由于公司提供的底层和功能产生冲突,想要控制异步任务回调执行的顺序,百思不能解,正好看到这么一个函数:setInterval,又想起了之前学的安卓中的 handler机制,写了下面的函数。注意setTimeOut会中断JS引擎对CPU资源的控制,也就是说其他函数也不能正常执行。

/**
 * 函数功能:中断函数,因为不满足条件产生中断,使得CPU去处理其他事务,然后轮询队列隔时询问,满足条件后继续执行
 * 思路   :模仿自Android的Handler机制,利用js代码的闭包特性,把消息池改变为满足条件,把通知Handler处理改为回调
 * 	@param handleMessage	后续事件
 * 	@param condition	前驱事件
 */
handler : function(condition,handleMessage){

	//轮询队列的编号,用于之后停止轮询
	var looperId = self.setInterval(Looper,200);
	function Looper(){
		
		if(!eval(condition)){
			return false;
		}
		
		//停止轮询
		window.clearInterval(looperId);
		handleMessage();
	}
}


注意:数字200是轮询的时间间隔,这个数字不能太大也不能太小,太大容易错过时机,太小占用过多CPU资源

调用:

		ifl.handler("1==1",function(){

			jq("#spaceParamForm").loadFormDetail({params:{id:id}});
		});

欢迎大家指出问题

转载请注明:http://blog.csdn.net/u013519020/article/details/53259169
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值