我正在尝试使用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 调用,并根据两个调用的结果显示以后的结果。