【发布时间】:2016-05-01 07:16:04
【问题描述】:
我正在尝试使用.when 和.each 来循环一些元素,然后.then 对结果做一些事情。但我不确定如何存储来自.when 的结果以在.then 中使用。
例如
var widget_data = [];
$.when(
$.each(widget_ids, function(index, widget_id){
$.get('/widget/' + widget_id, function(data){
widget_data.push(data);
});
})
)
.then(function(){
console.log(widget_data);
});
widget_data 数组运行后为空。
【问题讨论】:
-
那么上述方法发生了什么?
-
我看到 XHR 请求发生在 console.log 之后,并且 widget_data 为空
-
在
$.get中保留一个console.log(data),看看你是否在那里得到data -
.when中的 console.log(data) 工作并显示结果数据。似乎.then立即运行而无需等待.when完成。 -
试试
.done而不是.then