Javascript の setTimeout 関数により、JavaScript について少し知っていることを再評価する必要があります。今日の初めに、次のような for ループに遭遇しました。
for (i = 0; i < length; i++) {
setTimeout(executeOtherCode, 5000)
}
このコードが実行することを期待していたのは、executeOtherCode 関数を実行し、5 秒間「スリープ」してから、次の反復を続行することでした。代わりに、executeOtherCode が length 回同時に実行されました。
したがって、私の理解では、setTimeout は非同期関数呼び出しです。これは正しいです?しかし、通常の関数を実行する場合、hugeFunction() と呼びましょう。これは実行に 1 分かかりました。その関数が何かを返すまで、次のコード行は実行されませんよね?では、なぜこの 2 つは異なるのでしょうか。単なる言語設計の選択?
getJSON のように、同様に非同期で動作する jQuery の他の関数を見てきました。どの関数が非同期として定義されているかを知るだけの問題ですか、それともそれらを識別するための何らかのパターンがありますか? もしそうなら、何?