gpt4 book ai didi

带有 setTimeout() 的 Javascript 执行顺序

转载 作者:可可西里 更新时间:2023-11-01 02:40:39 25 4
gpt4 key购买 nike

假设我有以下代码:

function testA {
setTimeout('testB()', 1000);
doLong();
}

function testB {
doSomething();
}

function doLong() {
//takes a few seconds to do something
}

我执行 testA()。我读过 Javascript 是单线程的。 1000 毫秒后,当 testB() 达到超时时会发生什么?

我能想到的一些可能性:

  • testB() 排队等待在 doLong() 和它调用的任何其他内容完成后执行。
  • doLong() 立即终止并启动 testB()
  • doLong() 在停止(自动或在提示用户后)之前执行一段时间,并启动 testB()
  • doLong() 暂停,testB() 开始。 testB() 完成后,doLong() 继续。

正确答案是什么?它是依赖于实现还是标准的一部分?*

This question据我所知,相似但不相同。

如果您能推荐任何有助于更好地理解 Javascript 执行的链接,我们将不胜感激。

谢谢!

*是的,我知道并非所有浏览器都遵循标准:(

最佳答案

您的第一个猜测是正确的:testB() 排队等候在 doLong() 和它调用的任何其他内容完成后执行。

如果 testA 完成需要超过一秒,testB 将只需要等待。

此外,您应该编写 setTimeout(testB, 1000) 而不是 setTimeout('testB()', 1000)。将字符串发送到 setTimeout 就像使用 eval 一样,generally considered evil并且会让你成为敌人;)

关于带有 setTimeout() 的 Javascript 执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861050/

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