我正在开发一个使用 chrome.downloads.download
API 的 Chrome 扩展程序。我的扩展是捕获下载事件并触发 webkitNotification
。我从谷歌的一个示例中发布了我修改后的主要工作功能。
function downloadCheckedLinks() {
for (var i = 0; i < visibleLinks.length; ++i) {
if (document.getElementById('check' + i).checked) {
chrome.downloads.download({url: visibleLinks[i]}, function(id) {
var notification = window.webkitNotifications.createNotification('',
'OMG', 'hello within for loop, succeed!');
notification.show();
});
alert("function executed!");
}
}
window.close();
}
问题是,当我删除 alert("function returned")
时,它仅在 Debug模式下工作,在该模式下,我在 for 循环中设置了一个断点并单步执行代码。在正常模式下,我必须添加一些东西才能使其工作(即alert()
)。我觉得这是因为 chrome.downloads.download() 的异步函数调用。
由于我是网络开发这个词的新手,所以我不知道我的问题出在哪里。任何人都可以帮我弄清楚这里发生了什么吗?如果可能的话,您能否教我一下,在像 chrome.downloads.download()
这样的异步函数调用中,何时准确调用匿名回调函数?
最佳答案
注释window.close()
可以工作。我猜当窗口关闭时,下载调用就会被取消。但我无法给出具体原因。
关于google-chrome-extension - 为什么 chrome.downloads.download 在不添加另一个函数的情况下不起作用。(当在它后面添加alert() 时它就起作用了),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12353127/