【发布时间】:2012-10-25 00:45:55
【问题描述】:
下一个代码每 1 秒显示一次日期,然后停止。
(function() {
var i = setInterval(function() {
console.log(new Date());
}, 1000);
console.log("Hi");
setTimeout(function() {
clearInterval(i);
}, 3000);
console.log("Hola");
})();
输出:
Hi
Hola
Wed Oct 24 2012 13:35:27 GMT+0200 (CEST)
Wed Oct 24 2012 13:35:28 GMT+0200 (CEST)
Wed Oct 24 2012 13:35:29 GMT+0200 (CEST)
但是不知道为什么Hi和Hola会先显示。另外,为什么要执行setTimeout?不应该每 1 秒执行一次 setInterval 并且不能执行其他任何操作? (上面的代码是否按照编写的顺序运行?)
谢谢。
【问题讨论】:
-
所有代码直接运行。
-
没有。
setInterval和setTimeout立即返回,您的函数继续。稍后超时到期以执行您提供给这些调用的代码时,其他代码的执行将被中断。 -
@sje397 运行代码的执行不会被暂停。相反,如果当时正在运行 javascript,则定时事件会延迟。
-
@Jan Dvorak 你每天都能学到一些东西 :) 谢谢。
-
这个链接可能有用phpied.com/sleep-in-javascript
标签: javascript settimeout setinterval