jquery将现有(可重用)函数放入ajax请求中-不能使用async:false

jquery将现有(可重用)函数放入ajax请求中-不能使用async:false,jquery,function,Jquery,Function,我有一些ajax功能,例如 function MyFunctionA(PassingObj) { $.ajax({ url: '123.ashx',data: PassingObj, type: 'POST',contentType: 'application/json', success: function (data1) { return data1

我有一些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;
}

MyFunction和MyFunction是在整个页面上调用的通用函数,如果不可能,我不想实现回调,因为它们可以在不同的情况下使用。 我无法将Ajax函数设置为async:false-该选项在v1.8中已被弃用,我不允许使用它,并且它已导致问题()

因此,为了确认,我永远无法成功调用函数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;
                                }
                            }
                        }); 
                    }

                }
            });

(*-出于演示目的,这些只是虚拟函数)

为什么不在调用
myfunction
时添加要运行的回调函数,并使该函数在成功时运行。异步AJAX与同步AJAX非常不同,因为一个同步AJAX实际上会停止浏览器线程,这与异步所做的非常不同,并且不推荐使用。从我看到的情况来看,您希望一个带有AJAX的函数能够从多个位置调用,并且能够以多种方式使用。例如,我会将回调函数传递到
myfunction
的参数中,有时只需要调用myfunction而不调用MyFunctionB,有时它们需要一起调用,有时还需要调用MyFunctionC。显然,我不能像前面提到的那样去同步Ajax,我正在寻找一种方法来帮助保持函数的独立性和可重用性。即使我可以临时设置一个回调函数,也没关系,例如var GetResults{x:myfuncto(),y:MyFunctionB(),return GetResults.x()+GetResults.y()}嗯,您可以将它们分配给全局对象并调用它们的readystate:但这将应用于页面上的所有AJAX请求,而不仅仅是您所针对的那些请求。如果没有来自特定XMLHTTPRequest对象的回调,就很难以您尝试的方式获得特定AJAX请求的特定结束时间对象,但同样,您需要将代码重新排序为所显示的顺序,并且使用回调会更容易。因此,使用GetResults{x:myfunction(),y:MyFunctionB(),return GetResults.x()+GetResults.y()}的思想是可能的?