検証のためにこのシナリオを検討してください:
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.
}
}
さて、私の問題は、ループが終了する前にifブロックが実行されることです。の本体がvalidateForm
同期して実行されることを期待していましたが、jQuery each()
関数が非同期で実行されるようです。私は正しいですか?なぜこれが機能しないのですか?
each
それ自体は同期的に処理されます。ループ内から独自の非同期操作を開始していますか?
each
同期ですが、中のコードはそうではないかもしれません...