jQuery の「each()」関数は同期的ですか? 質問する

jQuery の「each()」関数は同期的ですか? 質問する

検証には次のシナリオを検討してください。

function validateForm (validCallback) {
   $('#first-name').add($('#last-name')).add($('#address')).each(function () {
      // validating fields and adding 'invalid' class to invalid fields.
   });
   // doing validation this way for almost 50 fields (loop over 50 fields)
   if ($('#holder .invalid').length == 0) {
       // submitting data here, only when all fields are validated.
   }
}

さて、私の問題は、もしブロックはループが終了する前に実行されます。 の本体はvalidateForm同期的に実行されると予想していましたが、jQueryeach()関数は非同期的に実行されるようです。 私の考えは正しいでしょうか? なぜこれが機能しないのでしょうか?

ベストアンサー1

はい、jQueryeachメソッドは同期的です。ほぼすべての JavaScript は同期的です。唯一の例外は、AJAX、タイマー (setTimeoutおよびsetInterval)、および HTML5 Web Workers です。
問題はおそらくコードの他の場所にあります。

おすすめ記事