は、私は次のコードを持っていると言います。私はJavascriptがシングルスレッドであることを読んだ。 testB()
のタイムアウトに達すると、1000ミリ秒後に何が起こりますか?Javascriptの実行順序は、()
私は考えることができるいくつかの可能性:
testB()
はdoLong()
、それが終了したと呼ばれる何か他のものの後に実行するためにキューに入れられています。doLong()
が直ちに終了し、testB()
が開始されます。doLong()
は、(自動的にまたはユーザにプロンプトを表示して)停止する前に実行するのに少し時間がかかり、testB()
が開始されます。doLong()
が一時停止中、testB()
が開始されます。testB()
が終了すると、doLong()
が再開します。
正解とは何ですか?実装に依存しているのか標準の一部ですか*
This questionは同じですが、私が知る限りは同じではありません。
Javascriptの実行をよりよく理解するために推奨できるリンクがあれば幸いです。
ありがとうございます!
*はい、私はありませんすべてのブラウザが標準に従っていることを知っている:(
私は 'setTimeout(function(){testB(); }、1000); '私は嘘をついた? –
@ Shadow Wizard:はい、かなり間違っています。私の知る限りあなたの方法と私の間には違いはありません(ただし、私のほうが短いです:D)。説明するために、あなたの式を変数に引っ張った場合を想像してみましょう: 'var f = function(){testB(); }; setTimeout(f、1000); '。それでも同じ意味ですが、今は冗長性を見ることができます。 – Jakob
文字列ではなくsetTimeoutに関数を渡すことについての回答とアドバイスの両方をお寄せいただきありがとうございます。私が読んできたチュートリアルがちょっと疑わしいですね;) –