需求很简单:项目的登陆功能通过ajax请求登陆多个系统,如果登陆成功的话清空密码框。
但由于是异步的请求,是否成功的判断都必须写在callback里面,导致重读代码冗余,难道就没有更优雅的写法吗?
代码:
function logOn(userName,password){
//支付系统
$.ajax({
url: paymentUrl,
success: function(data) {
//判断如果登陆成功就清空密码框
if(data.success){ clearPassword();}
}
});
//反洗钱系统
$.ajax({
url: amlUrl,
success: function(data) {
//判断如果登陆成功就清空密码框
if(data.success){ clearPassword();}
}
});
//核心系统
$.ajax({
url: coreUrl,
success: function(data) {
//判断如果登陆成功就清空密码框
if(data.success){ clearPassword();}
}
});
//本来想定义外部变量来判断,统一处理,但不能适应异步的情况
/*
if(successFlag){
clearPassword();
}
*/
}
大家讲道理2017-04-11 11:38:34
var ajax1 = $.ajax(url);
var ajax2 = $.ajax(url);
var ajax3 = $.ajax(url);
$.when(
ajax1, ajax2, ajax3
).then(function(data){
console.log(data);
clearPassword();
});
PHPz2017-04-11 11:38:34
其中的一种方式,若有不对,恳请告知,谢谢.
var urls = []; // 不同系统的请求url
urls.map(function(url){
$.ajax({
url: url,
success: function(data) {
successFn.call(this, data);
}
});
});
// 你的回调.
function successFn(data) {
if(data.success) {
clearPassword();
}
}