JavaScript setTimeout()不会等待执行?
问题描述:
请看下面的例子:JavaScript setTimeout()不会等待执行?
<script type="text/javascript">
function alertBox(){
alert('Hello World!');
}
function doSomething(){
setInterval(alertBox(), 5000); //This is for generic purposes only
};
function myFunction(){
setTimeout(doSomething(),3000);
};
myFunction();
</script>
是什么导致该执行立即,而不是等待3秒为单位设置,以及只执行警报ONCE,而比预定的5秒间隔?
感谢您提供任何帮助!
梅森
答
alertBox()
这是否看起来像一个直接函数调用?
尝试传递函数(但不执行),而不是:
setInterval(alertBox, 5000);
答
它因为你正在执行的功能,而不是传递一个函数对象。
function myFunction(){
setTimeout(doSomething, 3000); // no() on the function
};
好,**回调立即调用**(和* *结果传递给'setTimeout')..通过功能而不是。 – 2012-08-07 00:00:48
这可能是SO上单个最被问到的javascript问题。 – jfriend00 2012-08-07 00:01:36
@ jfriend00我觉得在循环中的变量可能会绑定它; ;-) – 2012-08-07 00:01:55