JavaScript setInterval和setTimeout
下一个代码每1秒显示一次日期,然后停止JavaScript setInterval和setTimeout,javascript,settimeout,setinterval,Javascript,Settimeout,Setinterval,下一个代码每1秒显示一次日期,然后停止 (function() { var i = setInterval(function() { console.log(new Date()); }, 1000); console.log("Hi"); setTimeout(function() { clearInterval(i); }, 3000); console.log("Hola"); })(); 输出: Hi H
(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
?不应假定setInterval
每1秒执行一次,并且不能执行任何其他操作?。(上面的代码是否按照编写顺序运行?)
谢谢。所有的
setTimeout()
和setInterval()
都会执行。
这不是sleep()
PHP的方法。。。可悲
但是,此链接可能很有用:
setTimeout
以及setInterval
仅注册函数(回调),然后直接转到下一个命令
因此,在调用第一次回调之前,将打印Hi
和Hola
第一次回调将在1秒后调用setInterval
,然后在2秒后再次调用。。3秒钟后setTimeout
启动并清除setInterval
这两个事件是异步的。它们在下一个可用时刻排队/执行,而不是在调用“setTimeout”或“setInterval”的确切时间。注释显示了执行顺序
(function() { // 0 anonymous function is called inline
var i = setInterval(function() { // 1 setInterval **schedules** the function
// parameter to be executed every second
console.log(new Date());
}, 1000);
console.log("Hi"); // 2 Display 'Hi' on console
setTimeout(function() { // 3 **Schedule** the function parameter to
// execute after three seconds
clearInterval(i);
}, 3000);
console.log("Hola"); // 4 Display 'Hola' on console
})();
// 5 Display date from setInterval function
// 6 Display date from setInterval function
// 7 Display date from setInterval function
// 8 Cancel setInterval executed from
// setTimeout function
希望这能消除您的困惑。所有代码都会立即运行。否
setInterval
和setTimeout
立即返回,您的功能将继续。其他代码的执行将在稍后超时时中断,以执行您为这些调用提供的代码。@sje397运行代码的执行将不会暂停。相反,如果javascript正在运行,则定时事件会延迟。@Jan Dvorak你每天都会学到一些东西:)谢谢。这个链接可能会很有用@Enrmac Yeah。你可以处理一段时间过去的事实。我在那篇文章的前几段中两次提到它们不是在一个单独的线程中执行的。实际上不是另一个线程,因为JavaScript引擎是单线程的,但是链接是一个很好的洞察