検証には次のシナリオを検討してください。
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 です。
問題はおそらくコードの他の場所にあります。