近期写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();
}
}
调用:
ifl.handler("1==1",function(){
jq("#spaceParamForm").loadFormDetail({params:{id:id}});
});
欢迎大家指出问题
转载请注明:http://blog.csdn.net/u013519020/article/details/53259169