我需要在循环中合并两个Chrome API,并在循环完成后将数组保存到存储中 这就是我所拥有的
chrome.downloads.search({}, function (DownloadItem) {
for (var i=0; i<DownloadItem.length; i++) {
var itemID = DownloadItem[i].id;
chrome.downloads.getFileIcon(itemID, function(iconURL) {
DL_icons[itemID] = iconURL;
});
}
console.log(DL_icons);
});
search
的结果是DownloadItem
个对象数组。我需要遍历它,获取ID,并且我需要将每个ID传递给chrome.downloads.getFileIcon
。
getFileIcon
方法的结果是iconURL
我需要在ID索引上推入新数组(我可以将它存储到具有相应ID的新对象中,然后将其推入数组,不会在这种情况下的问题)。
完成所有操作后,我需要将其存储到本地存储(或console.log ...)。 就像现在一样,我为每个数组元素获得了相同的ID和iconURL 基本上,我需要对内部API进行适当的关闭,并且无法使其正确。有人可以帮忙吗?
答案 0 :(得分:1)
如果有人偶然发现simmmilar问题,这就是我解决它的方法,而不是@elclanrs建议
chrome.downloads.search({}, function (DownloadItem) {
for (var i=0; i<DownloadItem.length; i++) {
var itemID = DownloadItem[i].id;
(function(index) {
chrome.downloads.getFileIcon(index, function(iconURL) {
DL_icons[index] = iconURL;
console.log(DL_icons);
});
})(itemID);
}
});
而不是传递循环索引,我传递了我的ID变量......作业完成