javascript中实现sleep的两种方式
最近在js中要使用到类似于C++中的sleep函数(让cpu休眠)。但是js是不可能让cpu休眠,所以可以通过下面的两种方式模拟sleep函数。
方式一:使用setTimeout函数代替。如果在一个循环中使用,那么先设置一个起始时间为0,每次设置的setTimeout时间不同,就会达到隔一段时间执行一个动作,再隔一段时间执行一个动作的效果。举例如下(每隔不固定的时间走到下一个预置点):
function StartPatrol() { var time = 0; $("#PatrolPresetList").children("div").each(function() { var oChildren = $(this).children("span"); var iPresetId = parseInt(oChildren.eq(2).attr("id"), 10); var iPatrolTime = parseInt(oChildren.eq(3).text().split("s")[0], 10); var iPatrolSpeed = oChildren.eq(4).text(); setTimeout(function(){GotoPreset(iPresetId);},time); time = time + iPatrolTime * 1000; }); }
方式二:死循环,当前时间减去开始的时间,直到时间到了为止。这种方式不推荐,因为这种方式的cpu占用太多。代码如下:
function sleep(n) { var start=new Date().getTime(); while(true) if(new Date().getTime()-start> n) break; }