欢迎各位兄弟 发布技术文章
这里的技术是共享的
function slee p(n) {
var start = new Date().getTime();
while(true) if(new Date().getTime()-start > n) break;
}
js中不存在自带的slee p方法,要想休眠要自己定义个方法
以下是补充:
除了Narrative JS,jwacs(Javascript With Advanced Continuation Support) 也致力于通过扩展JavaScript语法来避免编写让人头痛的异步调用的回调函数。用jwacs 实现的slee p,代码是这样:
这个语法更吓人了,而且还是java里不被推荐使用的线程方法名。坦白说我倾向于 Narrative JS。
同Narrative JS一样,jwacs也需要预编译,预编译器是用 LISP 语言编写。目前也是 Alpha 的版本。两者的更多介绍和比较可以参阅 SitePoint 上的新文章: Eliminating async Javascript callbacks by preprocessing
编写复杂的JavaScript脚本时,有时会有需求希望脚本能停滞指定的一段时间,类似于 java 中的 Thread.slee p 或者 sh 脚本中的 slee p 命令所实现的效果。
众所周知,JavaScript 并没有提供类似于 Java 的线程控制的功能, 虽然有 setTimeout 和 setInterval 两个方法可以做一些定时执行控制,但并不能满足所有的要求。一直以来,都有很多人问如何在JavaScript中实现 slee p/pause/wait ,也确实有些很蹩脚的解决方案:
最简单也最糟糕的方法就是写一个循环,代码可能如下:
如上的代码其实并没有让脚本解释器slee p下来,而且有让CPU迅速上到高负荷的附作用。浏览器甚至会在该段时间内处于假死状态。
除上之外,还有利用Applet或者调用Windows Script Host的WScript.slee p()等等鬼点子,这些都是万不得已的权宜之计。
终于有了更聪明的人,开发出了也许是最佳的方案,先看代码: