我正在尝试使用jQuery.when来触发两个ajax请求,然后在两个请求完成后调用某个函数。这是我的代码:
var count = 0;
var dfr;
var showData = function(data) {
dfr.resolve();
alert(count);
// Do something with my data data received
};
var method1 = function() {
dfr = $.Deferred();
return $.ajax('localhost/MyDataService/DataMethod_ReturnsData', {
dataType: "jsonp",
jsonp: "$callback",
success: showData
});
};
var method2 = function() {
return $.ajax('localhost/MyDataService/DataMethod_ReturnsCount', {
dataType: "jsonp",
jsonp: "$callback",
success: function(data) {
count = data.d.__count;
}
});
};
$.when(method1(), method2())
.then(showData());
但是,这并没有按预期工作。Ajax 调用method1将返回要使用的数据,showData()Ajax 调用method2将返回计数,该计数将分配给 var count 并稍后用于showData().
但是当我触发上面的代码时,method1会被调用,然后method2将showData数据保留showData为'undefined'. 我如何才能实现这一点$.when,据我所知,只有在执行两个返回$.promise的函数时才会进行。我希望应该并行调用两个 ajax 调用,并根据两个调用的结果显示以后的结果。