JavaScript setTimeout() 不会等待执行
JavaScript setTimeout() won't wait to Execute?
请考虑以下示例:
<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 秒,以及只执行一次警报,而不是按计划的 5 秒间隔执行?
感谢您提供的任何帮助!
石匠
alertBox()
这看起来不像是立即调用函数吗?
尝试传递函数(不执行它):
setInterval(alertBox, 5000);
这是因为您正在执行函数,而不是传递函数对象。
function myFunction(){
setTimeout(doSomething, 3000); // no () on the function
};
以下代码以不同的方式执行,
setTimeout(console.log('Nuwan'),0)---(A); and
setTimeout(function(){console.log('Nuwan'),0}) --- (B)
原因是当(B)正在执行时,javascript运行时中的CallStack将setTimeout()推送到Web API和WebAPI 等待 0 秒将回调函数推送到事件队列,然后在当前堆栈为空后,EventLoop 将回调推送到堆栈。
在案例 (A) 中,console.log() 直接调用,因为它在 WepAPI 中,无需执行事件循环。
更多参考:网络接口:https://developer.mozilla.org/en-US/docs/Web/API/Console_APIJavascript 运行时和事件循环:https://cybrohosting.com/knowledgebase/17/How-JavaScript-works-in-browser-and-node.html
相关文章:
- 等待回调函数执行
- 如何在seleniumwebdriver中执行javascript提示并等待接受输入
- Node.js-等待process.exit()在前面的代码完成后执行
- Javascript等待ajax成功后再执行代码
- 等待函数执行后再继续
- 必须等待执行 jQuery,直到加载服务
- 流星技术/模式,用于等待数据库变量更改,然后在 in 之后执行某些操作
- JavaScript setTimeout() 不会等待执行
- Ajax等待重定向以完成执行
- 动画在执行之前等待
- 等待JQuery执行,直到加载了整个页面,中断执行
- Javascript - 异步函数完成后下一行如何等待执行
- 如何要求 javascript 等待执行外部应用程序结束
- Chrome扩展:如何使后台等待执行
- 如何在执行下一行之前等待执行完成
- 等待执行完成后再执行
- Do函数在执行到下一行之前不等待执行完成
- 等待执行功能,直到新的数据反映在浏览器中
- JavaScript -等待执行
- 如何让JS函数等待执行