ブラウザで実行する場合setTimeout
、メイン プログラムの実行が完了する前にそのコードを実行することはありますか? 主要なブラウザー ベンダーはこの動作に同意していますか?それとも実装の副作用ですか? (または、この副作用を標準的な動作として保持することに同意したか)
非常に単純な (そして役に立たない) プログラムを考えてみましょう。
setTimeout(function(){
console.log("Timeout Called")
},1);
for(var i=0;i<10000000;i++){};
console.log("done");
最初に、コンソールに出力する単一のマイクロ秒のsetTimeout
コールバック関数を設定します。Timeout Called
次に、1 マイクロ秒以上ループしてスピンします。
次にdone
、コンソールに出力します。
このプログラムを実行すると、常に出力されます
done
Timeout Called
つまりsetTimeout
、メイン プログラムが実行されるまで、コールバック関数は考慮されません。
これは信頼できる定義済みの動作ですか? または、メイン プログラムの実行が停止し、コールバックが実行され、メイン プログラムの実行が継続される場合があります。