Javascript 在chrome扩展中下载URL数组

Javascript 在chrome扩展中下载URL数组,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在创建一个chrome扩展。我有一个URL数组,我想一个接一个地下载它们,一次下载一个(这意味着第二次下载将在第一次下载完成后开始,等等。) 我试过:(“links”是数组) 函数doDownloads(链接、迭代器、最大值){ chrome.downloads.download({ url:链接[迭代器], saveAs:false },函数(下载ID){ if(迭代器

我正在创建一个chrome扩展。我有一个URL数组,我想一个接一个地下载它们,一次下载一个(这意味着第二次下载将在第一次下载完成后开始,等等。)

我试过:(“links”是数组)

函数doDownloads(链接、迭代器、最大值){
chrome.downloads.download({
url:链接[迭代器],
saveAs:false
},函数(下载ID){
if(迭代器<最大值)
chrome.downloads.onChanged.addListener(函数goToNextDL(delta){
if(delta.id==下载id){
chrome.downloads.onChanged.removeListener(goToNextDL);
if(delta.state&&delta.state.current=='complete'&&iterator+1
这应该可以

var Dest=''; 

for(var i=0; i<links.length; i++){
 Dest='image'+i+'.jpg';
 chrome.downloads.download({url:links[i] ,filename:Dest, conflictAction:'overwrite'});

}
var Dest='';
对于(var i=0;i这个方法怎么样

var Counter=0; // global var




function DownloadURL(URL){

var DL=new XMLHttpRequest();

DL.onload=function(evt){var arraybuffer=DL.response;};

DL.addEventListener('load', function(evt){ Counter++; if(Counter<Links.length){DownloadURL(Links[Counter]);} });  // increment to next file

DL.open('GET',URL,true);

DL.responseType='arraybuffer';

DL.send();

}

经过几次尝试,我找到了解决问题的办法。 以下是正确的代码:

函数doDownloads(链接、迭代器、最大值){
chrome.downloads.download({
url:链接[迭代器],
saveAs:false
},函数(下载ID){
if(迭代器doDownloads(array_of_links,0,array_of_links.length);
这将使所有URL同时下载,这就是我试图避免的…您可以像这样封装每个DL…setTimeout(函数(){//DL in here},2500);服务器本身允许我一次只下载一个文件,因此我必须以某种方式检查下载的状态,而侦听器似乎是最好的解决方案。仅等待2500毫秒并不能解决问题。我试图用每个DL的延迟来更新答案,但消息不断中断。你不能用这种方式使用计数器,你在回调,这不会有任何效果啊,好吧,你必须埋头于DL Chrome API中,并把它做好。:)
DownloadURL(Links[Counter]);