พิจารณาสถานการณ์นี้เพื่อตรวจสอบความถูกต้อง:
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 block ถูกดำเนินการก่อนที่การวนซ้ำจะเสร็จสิ้น ฉันคาดว่าเนื้อหาvalidateFormจะถูกดำเนินการพร้อมกัน แต่ดูเหมือนว่าeach()ฟังก์ชันjQuery จะดำเนินการแบบอะซิงโครนัส ฉันถูกไหม? ทำไมถึงไม่ได้ผล?
eachตัวมันเองถูกประมวลผลพร้อมกัน คุณกำลังเริ่มการดำเนินการ async ของคุณเองจากภายในลูปหรือไม่?
eachเป็นแบบซิงโครนัส แต่รหัสข้างในอาจไม่ใช่ ...