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;   
} 
原文地址:https://www.cnblogs.com/matthew-2013/p/3499490.html