次のコードがあるとします。
function testA {
setTimeout('testB()', 1000);
doLong();
}
function testB {
doSomething();
}
function doLong() {
//takes a few seconds to do something
}
私は実行しtestA()ます。Javascript はシングルスレッドであることを読みました。testB()タイムアウトに達すると、1000 ミリ秒後に何が起こりますか?
私が考えることができるいくつかの可能性:
testB()後に実行するためにキューに入れられ、doLong()それが呼び出した他のすべてが終了しました。doLong()すぐに終了し、testB()開始されます。doLong()停止する前に (自動的に、またはユーザーにプロンプトを出してから) 実行するのに少し時間がかかり、testB()開始されます。doLong()一時停止、testB()開始されます。終了後testB()、doLong()再開します。
正解は?実装依存ですか、それとも標準の一部ですか?*
この質問は似ていますが、私が知る限り同じではありません。
Javascript の実行をよりよく理解するためにお勧めできるリンクを教えていただければ幸いです。
ありがとう!
*はい、すべてのブラウザーが標準に準拠しているわけではないことは承知しています :(