Я постепенно осваиваю использование обещаний, но теперь мне нужно обрабатывать несколько обещаний. Это фрагмент моего кода, который содержит два ввода электронной почты в форме, которые генерируют обещания, и оба должны быть обработаны, прежде чем форма может быть отправлена. Как я могу справиться с этой ситуацией?
// checks form submission
$('#ml_doaction').on('click', function(e) {
e.preventDefault();
var isOK = true;
$('form#volreg :input').each(function(){
var id = this.id;
switch(id)
{
case 'email_one':
case 'email_two':
checkEmailStatus(id, true).then(function(data) {
if(isOK && data !== false) {
// submit form
$('form#volreg').submit();
}
});
break;
// etc ....
//other validation functions that set isOK appropriately
}
});
});
$('#email').blur(function(){checkEmailStatus('email_one')});
$('#contact_email').blur(function(){checkEmailStatus('email_two')});
function checkEmailStatus(id)
{
var emailVal = $('#' + id).val();
var dfd = $.Deferred();
$.ajax({
type: 'POST',
data:{'checkEmailStatus':emailVal, 'checkList': 'General'},
url:'/php/ajax/validation-ajax.php',
success:function(response){
if(response == 'notinlist') {
dfd.resolve(false);
}
else if(response == 'yesinlist') {
dfd.resolve(true);
}
},
});
return dfd.promise();
}