1. ホーム
  2. jquery

[解決済み] jQueryの "each() "関数は同期ですか?

2022-05-28 01:48:53

質問

このシナリオを検証してください。

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 の本文は同期的に実行されるものと思っていましたが、どうやらjQueryの each() 関数は非同期で実行されるようです。私は正しいですか?なぜこれが動作しないのですか?

どのように解決するのですか?

はい、jQueryの each メソッドは同期です。ほぼすべてのJavaScriptは同期です。唯一の例外は、AJAX、タイマー ( setTimeoutsetInterval )、および HTML5 Web Workers。

あなたの問題は、おそらくコードの他の場所にあります。