Всем привет.
Имеется расширение (дополнение, приложение) для браузера Google Chrome. При выборе нескольких ссылок происходит скачивание файлов, но т.к. файлы качаются по одному и не успев загрузится предыдущий файл в очередь становиться загрузка нового файла (фото по 300кб - штук 150), и соответственно некоторые из файлов уходят в отмену (сбой при загрузке). В результате приходится просматривать историю загрузки и искать файлы которые не загрузились.
Вариант решения вопроса я вижу следующий: поставить таймер, после вызова ссылки, на загрузку каждого файла по 2 секунде (компьютер и интернет слабые). Т.е. ссылку выбрал, скачивание началось, задержка на 2 секунды, ссылку выбрал, скачивание началось, задержка на 2 секунды, и т.д.
Расширение из браузера я выгрузил, но в программировании я 0.
Помогите пожалуйста дописать программу.
файлы:
background.jschrome.browserAction.onClicked.addListener(function(tab) {
var startLink = "https://"+cleanUp(tab.url);
chrome.tabs.sendMessage(tab.id, {greeting: 'test'}, function(response){
var length = response.links.length;
for ( var i = 0; i < length; i++) {
chrome.downloads.download({
url: startLink + response.links[i],
//saveAs: true
conflictAction: "uniquify"
}); //Здесь нужно вставить паузу
}
});
});
function cleanUp(url) {
if(url.search(/^https?\:\/\//) != -1)
url = url.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i, "");
else
url = url.match(/^([^\/?#]+)(?:[\/?#]|$)/i, "");
return url[1];
}
content.jschrome.extension.onMessage.addListener(function(request, sender, sendResponse){
var links = [];
$('.main-grid-table tbody tr.main-grid-row-checked').each(function(){
console.log($(this));
$(this).find('a').each(function(){
var link = /download=y/i.exec( $(this).attr('href') );
if ( link ) {
links.push( $(this).attr('href') );
}
});
});
if ( links.length < 1 ) {
alert('Вы не выбрали ни одной строки для массового скачивания!');
} else {
sendResponse({links: links});
}
});