结合Chrome异步api
Combining Chrome async APIs
我需要在循环中组合两个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闭包,只是不能使它正确。有人能帮帮忙吗?
如果有人遇到类似的问题,这就是我如何解决它,感谢@ elclars的建议
它来自于这个答案
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变量…工作完成了
相关文章:
- 无法使用开放天气图 API 异步获取天气
- Dojo Build System - 使用带有谷歌地图API的异步插件
- Angularjs的异步API请求
- 并行开发同步/阻塞和异步/非阻塞库api的好方法是什么?(JavaScript)
- 异步编程-如何在对象数组中循环,并使用从api获取的数据更改每个对象的属性
- 如何重新构建此 for 循环,以便在异步 api 调用完成之前不会进行下一次迭代
- 将异步 API 转换为同步 API.(我保证有一个很好的理由)
- 一个回调两个异步函数,一个是谷歌 api getDistanceMatrix
- 如何优化异步.js API 调用
- 需要来自异步 API 调用的数据的构造函数
- 谷歌地图Javascript API异步获取和动态显示标记
- 在对 facebook API 的异步调用中丢失范围
- Javascript:侦听多个异步 Google Maps API v3 请求以完成
- 使用 ajax 调用异步 Web api 方法
- 异步加载谷歌地图 API
- 在对 FB.api 进行异步调用时保留变量值
- 谷歌地图 api 异步加载 - 已经尝试了所有解决方案 - 变得疯狂
- $scope没有在第三方API异步调用后对视图应用更改
- 如何在谷歌地图v3 API异步添加标记
- Google Api异步回调失败