假设我有以下代码:
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()
继续。
正确答案是什么?它是依赖于实现还是标准的一部分?*
据我所知,这个问题相似但不相同。
您可以推荐任何链接以更好地理解 Javascript 执行,我们将不胜感激。
谢谢!
*是的,我知道并非所有浏览器都遵循标准:(