【发布时间】:2012-07-21 01:12:09
【问题描述】:
在 Javascript (jQuery) 中执行以下操作的惯用方式是什么?
- 生成一组异步作业
- 收集部分结果
- 当每个作业都完成后,合并部分结果
上述可以通过以下方式实现(为简单起见,假设请求按顺序处理;在更现实的情况下,计数器会完成这项工作):
var results = new Array();
$.each(objs, function(i,obj)){
$.getJSON(make_async_request(obj), function(data) {
results[data.key] = data.value;
if (i == objs.length-1)
elaborate(results);
}
});
在我看来很难看。有什么建议吗?
【问题讨论】:
-
用多个 HTTP 请求猛击服务器并不一定会让事情变得更好。当然我们不知道你的情况,但你的代码看起来不错(除了检查
i==objs.length-1的位,因为没有保证最后一个请求将最后完成)。 -
你说得对。我已经用我在这里所做的假设更新了这个问题。
标签: javascript jquery idioms