พิจารณาสถานการณ์นี้เพื่อตรวจสอบความถูกต้อง:
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
เป็นแบบซิงโครนัส แต่รหัสข้างในอาจไม่ใช่ ...