jQuery / deferreds : 在多个 .get 完成时收到通知
jQuery / deferreds : being notifyed when multiple .get are finished
我编写这段代码是为了从多个 url 中获取项目。我想知道何时满足所有 $.get
调用:
foo : function(arrIds){
var arrJqxhr = [];
var arrReturnedData = []
for ( var i = 0, l = arrIds.length; i < l; i++ ) {
var url = '/thing/' + arrIds[i].toString()
arrJqxhr[i] = $.get(url)
.done(function(data, textStatus, jqXHR) {
arrReturnedData.push(data);
})
}
除了记录 .done
被调用了多少次之外还有什么更好的方法吗?
您可以使用$.when
var arrReturnedData = [];
var arrJqxhr = $.map(arrIds, function (id) {
var url = '/thing/' + id.toString()
return $.get(url)
.done(function (data, textStatus, jqXHR) {
arrReturnedData.push(data);
})
});
$.when.apply($, arrJqxhr).then(function(){
//this will be called once all requests are successfully completed
$.each(arguments, function(i, arr){
arrReturnedData.push(arr[0])
});
});
我编写这段代码是为了从多个 url 中获取项目。我想知道何时满足所有 $.get
调用:
foo : function(arrIds){
var arrJqxhr = [];
var arrReturnedData = []
for ( var i = 0, l = arrIds.length; i < l; i++ ) {
var url = '/thing/' + arrIds[i].toString()
arrJqxhr[i] = $.get(url)
.done(function(data, textStatus, jqXHR) {
arrReturnedData.push(data);
})
}
除了记录 .done
被调用了多少次之外还有什么更好的方法吗?
您可以使用$.when
var arrReturnedData = [];
var arrJqxhr = $.map(arrIds, function (id) {
var url = '/thing/' + id.toString()
return $.get(url)
.done(function (data, textStatus, jqXHR) {
arrReturnedData.push(data);
})
});
$.when.apply($, arrJqxhr).then(function(){
//this will be called once all requests are successfully completed
$.each(arguments, function(i, arr){
arrReturnedData.push(arr[0])
});
});