gpt4 book ai didi

javascript - 使用 Promise 进行多个 jQuery Ajax 调用

转载 作者:行者123 更新时间:2023-12-03 00:50:12 25 4
gpt4 key购买 nike

我正在慢慢掌握使用 Promise 的窍门,但现在需要处理多个 Promise。这是我的代码的摘录,其中表单中有两个电子邮件输入,两者都生成 promise ,并且都必须在提交表单之前进行处理。我该如何处理这种情况?

// 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();
}

最佳答案

您使用Promise.all函数

 var promises = [];
$('form#volreg :input').each(function(){
var id = this.id;
switch(id)
{
case 'email_one':
case 'email_two':
promises.push(checkEmailStatus(id, true));
break;

// etc ....
//other validation functions that set isOK appropriately
}
});

Promise.all(promises).then(function(values) {
var isData = true;
$.each(values,function(v) {
if(v == false) {isData = false;
break;}
})
if(isOK && isData !== false) {
// submit form
$('form#volreg').submit();
}
});

关于javascript - 使用 Promise 进行多个 jQuery Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53085640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com