【发布时间】:2012-05-08 14:15:56
【问题描述】:
我有以下参数:
a = [{param:'a'}, {param:'b'}, {param:'c'}]
我想为每个参数发出一个 get 请求,如下所示:
a.map(function(ai){return $.get('myapi/get?ai='+ai.param)})
所有 get 请求完成后我该怎么做?
我尝试过使用 $.when,如下所示:
$.when(
a.map(function(ai){return $.get('myapi/get?ai='+ai)})
)
.done(function(results){
results.forEach(function(ri, i){
ri.success(function(result){
a[i].result = result
}
}
do_something_with(a)
}
不幸的是,我显然误解了这个 $.when().done() 成语,因为当我调用 do_something_with(a) 时,我没有新的 .result 属性。我猜这是因为when 看到的是一个数组,所以直接进入.done(),而不是等待每个组件get 完成。
任何帮助将不胜感激!
【问题讨论】:
-
ri.success应该是什么?ri是 AJAX 调用返回的结果(或者,如果代码中没有其他错误,则返回结果),而不是延迟的/jqXHR对象。
标签: javascript jquery