js中的sleep

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013519020/article/details/53259169

近期写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
展开阅读全文

没有更多推荐了,返回首页