推扬网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
推扬网 门户 经验分享 查看内容

JavaScript实现Sleep函数的代码

2020-4-11 13:40| 发布者: admin| 查看: 367| 评论: 0

大家知道,JavaScript中没有内置我们常用的sleep()函数,只有定时器setTimeout()和循环定时器setInterval()

但是,这两个函数是异步的,在计时的过程中它们后面的代码还是会继续执行。那就自己来写个sleep()函数吧,网上也流传了一些实现方法,不过我发现下面这个方法简单易懂而且实用,所以在这里分享给大家:


console.log('start...');
console.log('now time: ' + Date(/\d{10,10}/.exec(Date.now())));
function sleep(sleepTime) {
       for(var start = Date.now(); Date.now() - start <= sleepTime; ) { }
}
sleep(5000); // sleep 5 seconds
console.log('end...');
console.log('end time: ' + Date(/\d{10,10}/.exec(Date.now())));

如果大家的程序对sleep()函数的精确度不那么高的话,使用这个函数是个不错的选择

下面这个是复杂些的,需要的朋友也可以参考一下:

function Sleep(obj,iMinSecond)
 { 
  if (window.eventList==null) 
  window.eventList=new Array(); 
  var ind=-1;
  for (var i=0;i<window.eventList.length;i++)
  {  
   if (window.eventList[i]==null) 
   { 
    window.eventList[i]=obj;   
    ind=i;  
    break;  
   } 
  } 
  if (ind==-1)
  {  
   ind=window.eventList.length;  
   window.eventList[ind]=obj;
  } 
  setTimeout("GoOn(" + ind + ")",iMinSecond);
 }
 function GoOn(ind)
 { 
  var obj=window.eventList[ind];
  window.eventList[ind]=null;
  if (obj.NextStep) obj.NextStep();
  else obj();
 }
 function Test()
 { 
  alert("sleep"); 
  Sleep(this,100);
  this.NextStep=function()
  { 
  alert("continue");
  }
 }


鲜花

握手

雷人

路过

鸡蛋

最新评论

精选推荐

    广告服务|投稿要求|禁言标准|版权说明|免责声明|手机版|小黑屋|推扬网 ( 粤ICP备18134897号 )|网站地图 | 邮箱:vayae@hotmail.com

    GMT+8, 2025-9-12 09:02 , Processed in 0.069580 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    返回顶部