插曲:昨晚面试问到了这个问题,自己答的也不是很好。查缺补漏吧!主要功能就是能够让程序等待设置的时间
函数签名:
sleep(sleepTime)
sleepTime的单位是毫秒方案一:使用Date + for-loop
优点:足够简单,通俗易懂
缺点: 简单粗暴的new Date,如果等待的时间长的话,很可能把机器卡死
综上:不适合长时间等待function seelp(sleepTime) {for(let start = new Date; new Date -start <= sleepTime;){}
}
方案二:Promise + setTim...
但是,这两个函数是异步的,在计时的过程中它们后面的代码还是会继续执行。那就自己来写个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); // sle...
下面就是我的实现的方法: 代码 代码如下: function test() { var s="javascript--暂停函数"; setTimeout( function(){ eval(sleep(test)); //执行return之后的代码,也就是“alert(s);” }, 2000 ); //两秒后执行 return; //运行到这就退出 alert(s); } function sleep(func) { if (func == null) { return ; } var reg= /[\n\r]/g; var funcStr = func.toString().replace(reg,''); //替换回车和换行符 reg = /.+?sleep.+?re...
即然该功能如此需要,但为什么js中不提供这样的函数呢? 目前浏览器都是在UI线程解析js,以火狐浏览器为例,我重新编译了js引擎,并且在js引警中添加了sleep方法,该方法调用c语言的线程睡眠函数. 将方法附加到Object上,方法签名为sleep();无参数.默认休眠1秒钟,如果你在js中调用该函数,浏览器UI界面将被阻碍。 另外如果你的js函数存在死循环,浏览器的js解析会检测到js执行超时会提醒你是否终止执行本页面的js. 最后提供新编译的js引擎,将...
代码如下: 下面是别的网友写的代码 代码如下: /*Javascript中暂停功能的实现 Javascript本身没有暂停功能(sleep不能使用)同时 vbscript也不能使用doEvents,故编写此函数实现此功能。 javascript作为弱对象语言,一个函数也可以作为一个对象使用。 比如: function Test(){ alert("hellow"); this.NextStep=function(){ alert("NextStep"); } } 我们可以这样调用 var myTest=new Test();myTest.NextStep(); 我们做暂停的时候可...
有几种方式,但都不完美 其一,不断循环,直到达到指定时间 代码如下: function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } 其实代码并没有让脚本sleep下来, 相反让CPU迅速上到高负荷的附作用。多数现代浏览器会在该段时间内处于假死状态 其二,用xhr同步请求后台程序,比如传2000过去,后台就s...
javascript中不提供sleep功能,而我们时长会用到这个功能。 有一种思路是跑一段循环体,让程序空耗CPU的时间来实现延时。这有一个不足,不同的机器CPU的执行速度是不一样的,这很容易导致的慢的机器会SLEEP很久。 笔者从别的论坛看到一种机智的解决方法,在不同的机器上的执行速度是一致的。在此与大家共享。 代码如下: function sleep(n) { var start=new Date().getTime(); while(true) if(new Date().getTime()-start>n) break...
js中不存在自带的sleep方法,要想休眠要自己定义个方法function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}以下是补充:
除了Narrative JS,jwacs(Javascript With Advanced Continuation Support) 也致力于通过扩展JavaScript语法来避免编写让人头痛的异步调用的回调函数。用jwacs 实现的s...
nodejs最让人不爽的就是其单线程特性,很多事情没法做,对CPU密集型的场景,性能也不够强劲。很长一段时间,我想在javascript语言框架下寻求一些解决方案,解决无法操作线程、性能差的问题。曾经最让我印象深刻的方案是fibers,不过fibers也好,其他方案也好,在线程操作上还是很别扭,太过依赖辅助线程,本末倒置;就fiber而言,javascript固有的低性能问题并不能解决;最别扭的是在javascript语言框架下,线程间的消息传递常常很...
最近在写一些奇怪的东西的时候,发现大佬们用go或者其他语言实现的并发任务用了thread.sleep让主进程暂停。
回头一想,妈个鸡我要复制粘贴到node一直循环不合适啊,我也需要暂停来着!
怎么办??
抓了脑袋一会去npm上找了下相关的包,发现有个叫thread-sleep的包,下载量还挺高。
抱着好奇心去看了下源码,又发现源码相当之骚气
use strict;var childProcess = require(child_process);
var nodeBin = process.argv[0];module.exp...
我在网上了解了一下nodejs中sleep功能,搜索了很多关于nodejs中sleep功能介绍,下面我来记录一下,有需要了解的朋友可参考。希望此文章对各位有所帮助。一 背景在使用nodejs爬虫的时候,经常会遇到别人的网站对频率的反爬机制,这个时候如果不做处理程序就会挂掉,重新启动也会继续被屏蔽.这个问题怎么解决呢,我的想法就是程序暂停10分钟或者更长的时间,继续爬取.二 方法其实使用setTimeout就可以实现,只是nodejs异步已经很金字塔了,再加...
nodejs最让人不爽的就是其单线程特性,很多事情没法做,对CPU密集型的场景,性能也不够强劲。很长一段时间,我想在javascript语言框架下寻求一些解决方案,解决无法操作线程、性能差的问题。曾经最让我印象深刻的方案是fibers,不过fibers也好,其他方案也好,在线程操作上还是很别扭,太过依赖辅助线程,本末倒置;就fiber而言,javascript固有的低性能问题并不能解决;最别扭的是在javascript语言框架下,线程间的消息传递常常很...
js中不存在自带的sleep方法,要想休眠要自己定义个方法
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}以下是补充:
除了Narrative JS,jwacs(Javascript With Advanced Continuation Support) 也致力于通过扩展JavaScript语法来避免编写让人头痛的异步调用的回调函数。用jwacs 实现的...
javascript中不提供sleep功能,而我们时长会用到这个功能。 有一种思路是跑一段循环体,让程序空耗CPU的时间来实现延时。这有一个不足,不同的机器CPU的执行速度是不一样的,这很容易导致的慢的机器会SLEEP很久。 笔者从别的论坛看到一种机智的解决方法,在不同的机器上的执行速度是一致的。在此与大家共享。 代码如下:function sleep(n) { var start=new Date().getTime(); while(true) if(new Date().getTime()-start>n) break;...
有几种方式,但都不完美 其一,不断循环,直到达到指定时间 代码如下:function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } 其实代码并没有让脚本sleep下来, 相反让CPU迅速上到高负荷的附作用。多数现代浏览器会在该段时间内处于假死状态 其二,用xhr同步请求后台程序,比如传2000过去,后台就sl...