我有一些 ajax 函数* 例如
function MyFunctionA(PassingObj) {
$.ajax({
url: '123.ashx',data: PassingObj, type: 'POST',contentType: 'application/json',
success: function (data1) {
return data1
}
}
});
function MyFunctionB(PassingObj) {
$.ajax({
url: '456.ashx',data: PassingObj,type: 'POST', contentType: 'application/json',
success: function (data2) {
return data2
}
}
});
var GetValuesXY(){
var x = MyFunctionA(PassingObj);
var y = MyFunctionB(PassingObj);
return x + y;
}
MyFunctionA 和 MyFunction 是在整个页面上调用的通用函数,如果不可能,我不想实现回调,因为它们可以在不同的情况下使用。我无法将 Ajax 函数设置为 async:false - 从 v1.8 开始不推荐使用该选项,并且我不允许使用它,并且它导致了问题 ( http://api.jquery.com/jQuery.ajax/ )
因此,为了确认,我永远无法成功调用函数 GetValuesXY(){},因为 x 将始终未定义,因为它会继续运行而无需等待结果,因为它是异步的。
因此,目前我知道如何处理上述问题的唯一方法是合并 2,这在这种情况下是不可接受的:
function MyFunctionA(PassingObj) {
$.ajax({
url: '123.ashx',data: PassingObj,type: 'POST',contentType: 'application/json',
success: function (data1) {
$.ajax({ //MyFunctionB is effectively copied in here
url: '456.ashx',data: PassingObj,type: 'POST',contentType: 'application/json',
success: function (data2) {
return data1 + data2
}
}
});
}
}
});
现在我根本不能单独使用这两个示例函数,这是一种非常非常低效的编程方式,因为我可能对此有无限量的排列,并且每次我都必须剪切和粘贴其中的每一个使用任何功能
至少不能将函数调用放在 ajax 请求中吗?顺其自然
var myData1;
var myData2;
$.ajax({
call MyFunctionA(),
success: function (data1) {
myData1 = data1;
$.ajax({
call MyFunctionB(),
success: function (data2) {
myData2 = data2;
}
}
});
}
}
});
(* - 这些只是用于演示目的的虚拟函数)