结合Chrome异步API

时间:2014-08-23 21:39:50

标签: javascript google-chrome asynchronous

我需要在循环中合并两个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.getFileIcongetFileIcon方法的结果是iconURL我需要在ID索引上推入新数组(我可以将它存储到具有相应ID的新对象中,然后将其推入数组,不会在这种情况下的问题)。

完成所有操作后,我需要将其存储到本地存储(或console.log ...)。 就像现在一样,我为每个数组元素获得了相同的ID和iconURL 基本上,我需要对内部API进行适当的关闭,并且无法使其正确。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果有人偶然发现simmmilar问题,这就是我解决它的方法,而不是@elclanrs建议

来自this answer

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变量......作业完成