chrome.downloads.download
APIを使用するChrome拡張機能に取り組んでいます。私の拡張機能は、ダウンロード イベントをキャプチャしてトリガーすることwebkitNotification
です。Google のサンプルの 1 つから、変更の主な作業機能を投稿します。
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 executed")
、デバッグ モードでのみ機能し、for ループにブレークポイントを設定してコードをステップ実行することです。通常モードでは、それを機能させるために何かを追加する必要があります (つまりalert()
)。の非同期関数呼び出しのせいな気がしますchrome.downloads.download()
。
私は Web 開発という言葉に慣れていないので、自分の問題がどこにあるのか正確にはわかりません。ここで何が起こったのかを理解するのを手伝ってくれる人はいますか? 可能であれば、このような非同期関数呼び出しchrome.downloads.download()
で、匿名のコールバック関数が正確に呼び出される場合を教えてください。