gpt4 book ai didi

javascript - 这两个代码块关于 setTimeout 问题的区别

转载 作者:行者123 更新时间:2023-11-29 19:29:11 24 4
gpt4 key购买 nike

我这里有两个代码块:

block 1:

setTimeout(function(){  
func1();
setTimeout(function(){
func2();
},500);
},500);

block 2:

setTimeout(function(){  
func1();
},500);
setTimeout(function(){
func2();
},1000);

这两个block有什么区别?(不仅仅是结果,还有执行过程)

最佳答案

在您的比较中,func2() 将在第一个 block 中稍后被调用,然后在第二个 block 中被调用。为什么?因为它在触发一个新的setTimeout() 定时器之前先执行了func1()

// First scenario:
setTimeout()
*---------*----------*===*
500 1000
Func1()
*--*
setTimeout()
*-----------*
500
Func2()
*-*
// Second scenario:
setTimeout()
*---------*----------*
500 1000
Func1() Func2()
*-* *-*

在大多数情况下,差异很小。但这取决于您在 func1() 中执行的操作。该函数的执行时间会将第二个超时时间推到相对于第一个 setTimeout() 的较晚时间点。


关于执行、计时器和更多相关内容,我去年在柏林的 jsConf 上看到了一个有趣的深入 session ,内容涉及 javascript 引擎如何在表面之下工作,涉及调用堆栈、回调、异步请求等。这 25 分钟花得很值。

Philip Roberts: What the heck is the event loop anyway?

关于javascript - 这两个代码块关于 setTimeout 问题的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29117158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com