Как применить задержку в JSZip API для загрузки? - PullRequest
0 голосов
/ 26 января 2019

Как применить задержку в JSZip API?Я хочу сжать несколько файлов.но я хочу добавить некоторую задержку между передачей файлов с веб-сервера.Как добавить задержку в приведенном ниже коде?

Это для браузера и развертывания двоичных файлов внутри устройства.

 $scope.download = function () {
            var urls = ["/FILES/AlertLog.txt",
        "/FILES/AuditLog.txt",
        "/FILES/TotLog.txt",
       "/FILES/Historian.csv",
        "/FILES/History2.csv",
        "/FILES/Factory.cfg",
        "/FILES/SLog.txt",
        "/FILES/se.dump",
        "/FILES/AssertLog.txt",
        "/FILES/History2.csv",
        "/FILES/History3.csv",
         "/FILES/History4.csv"
        ];
    compress_files(urls);
}

function compress_files(urls) {
    var zip = new JSZip();
    var deferreds = [];
    for (var i = 0; i < urls.length; i++) {
     $timeout(function(){  deferreds.push(addToZip(zip, urls[i], i));
    },200);// issue to deferreds variable =>undefined
    $.when.apply(window, deferreds).done(generateZip);
}

function addToZip(zip, url, i) {
    var deferred = $.Deferred();
    JSZipUtils.getBinaryContent(url, function (err, data) {
        if(err) {

            deferred.resolve(zip); 
        }
        else {
            var arr=url.split("/");
            zip.file(arr[2], data, { binary: true });
            deferred.resolve(zip);
        }
    });
    return deferred;                                    
}

добавляет некоторую задержку в миллисекундах между передачей файлов с веб-сервера.

1 Ответ

0 голосов
/ 31 января 2019

Я пытаюсь загрузить отдельный файл, давая некоторую задержку. Это исправило мою проблему

function downloadAll(files){
if(files.length == 0) return;
file = files.pop();
var theAnchor = $('<a />')
    .attr('href', file[1])
    .attr('download',file[0])
    // Firefox does not fires click if the link is outside
    // the DOM
    .appendTo('body');

theAnchor[0].click(); 
theAnchor.remove();
downloadAll(files); }
function downloadAll(files){
if(files.length == 0) return;
file = files.pop();
var theAnchor = $('<a />')
    .attr('href', file[1])
    .attr('download',file[0])
    // Firefox does not fires click if the link is outside
    // the DOM
    .appendTo('body');

theAnchor[0].click(); 
theAnchor.remove();
downloadAll(files);
}

$('a.download-csv').on('click', function(){
downloadAll([
    ['file1.csv', 'data:text/csv;charset=utf8,'+
              encodeURIComponent('my,csv,file\and,so,on')],
    ['file2.txt', 'data:text/plain;charset=utf8,'+
              encodeURIComponent('this script can do what I need.')],
    ['file3.js', 'data:text/javascriptcharset=utf8,'+
              encodeURIComponent('alert(\'You can donate me your house if you like this script :-) \')')]
]);
});
...