【发布时间】:2011-06-19 03:56:03
【问题描述】:
假设我有以下代码:
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 执行。
谢谢!
*是的,我知道并非所有浏览器都遵循标准:(
【问题讨论】:
标签: javascript execution multiple-browsers