我有一个循环遍历一系列
HTML元素.每次迭代都会发出一个GET请求(其url取决于当前元素)并进行一些额外的处理.如果我想表示所有请求都已完成,我该怎么做?
HTML元素具有格式
<td align="left">Item name</td>
这就是我所拥有的:
var url = "http://example.com/page.phtml?item="; var items = $(itemList).find('table tbody tr td[align=left]'); for (var i = 0; i < items.length; i++) { (function (i) { var itemName = items[i].innerHTML; $.get(url + itemName,function(data) { // process some stuff console.log("Processing item " + itemName); }); })(i); }
解决方法
@H_502_24@ 你可以使用jQuery的$.when():var url = "http://example.com/page.phtml?item="; var items = $(itemList).find('table tbody tr td[align=left]'); var promises = items.map(function(i,elem) { var itemName = items[i].innerHTML; return $.get(url + itemName,function(data) { // process some stuff console.log("Processing item " + itemName); }); }).get(); $.when.apply($,promises).done(function() { // all promises done here });
你积累了一个promises数组(这是从$.get()返回的),然后将这个promises数组传递给$.when(),它创建了一个汇总promise,当所有其他promise都被解析时解析.