在js中实现while,sleep的方法

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

最近想在JavaScript里写个类似下面无限循环且暂停固定时间段的小方法,却发现js里面没有sleep。

while(true){
	//dosomething()
    Thread.sleep(1000); //pause for 1 sec
}

所以在JavaScript里的替代方法是setInterval(function, milliseconds)

例子:

显示当前时间:

    //output date and time string
    var dateTime = () => {
        var date = new Date();
        return date.toDateString()+' '+date.toLocaleTimeString();
    }
    
    //refresh each second
    setInterval(function(){
	$('#clock').text(dateTime()); 
}, 1000);

==============
下面是Google来的另一种sleep方法:

  1. 先自己写一个sleep方法
 const sleep = (milliseconds) => {
   return new Promise(resolve => setTimeout(resolve, milliseconds))
  }
  1. 使用then
    sleep(500).then(() => {
    //do stuff
    })
  1. 使用asyn异步
    const doSomething = async () => {
  		await sleep(2000)
  		//do stuff
    }
	doSomething()

Reference:

https://flaviocopes.com/javascript-sleep/

展开阅读全文

在VC++中如何实现自定义Sleep方法

09-06

大家好,我现在正在开发一个虚拟机内核(相关C51和ARM),在其中应用了WINDOWS多线程程序设计,rn需要精确定义CPU的时间,进行微妙控制,步骤如下:rn(1)启动一个虚拟机主线程,用来模拟8051单片机rn(2)在这个线程中使用精确延时来控制虚拟机的运行频率(虚拟机的线程频率==8051的运行频率(如10MH))。rn(3)无论频率多少的宿主机CPU运行虚拟机线程时能够保证线程的运行频率为10MH。rn(4)本线程运行后不影响其他线程。rn遇到问题:rn(1)Windows中Sleep()方法是以毫秒这个数量级为控制单元的,对我来说这个数量级太长了,我需要微妙级。rn(2)在虚拟机主线程执行微妙级Sleep时,不阻塞其他线程的执行,只是把自己挂了起来,等待调度器调度重启。rn(3)如何重写一个自定义Sleep()方法实现微妙级时间控制(这跟简单的微妙级延时不是一回事,因为在Windows的Sleep()rn 方法中会首先把自己挂起来-->放到等待队列中-->执行延时-->通知操作系统调度线程)。rnrn我写了一个自定义Sleep方法的伪代码,请大家帮忙实现一下:rn rnsleep(int microsecond)rn add_wait_queue(current_thread);//添加当前线程到等待队列 rn LARGE_INTEGER t1,t2,feq; rn QueryPerformanceFrequency(&feq);//每秒跳动次数 rn QueryPerformanceCounter(&t1); //测前跳动次数 rn for(;true;)rn QueryPerformanceCounter(&t2);//测后跳动次数 rn double d=((double)t2.QuadPart-(double)t1.QuadPart)/((double)feq.QuadPart);//时间差秒 rn if(d == microsecond)rn break;rn rn rn schedule(); //操作系统调度线程rn rn 论坛

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