10
說我有以下代碼:用的setTimeout的Javascript執行順序()
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執行,您可以推薦任何鏈接,我們將不勝感激。
謝謝!
*是的,我知道,並不是所有的瀏覽器遵循標準:(
我開始相信`setTimeout(function(){testB(); },1000);`是最好的方法,我誤導了嗎? – 2011-02-01 10:07:51