当很多单个文件需要压缩时jszip async zip文件怎么样

时间:2016-11-02 02:37:43

标签: jszip

我不擅长英语,但我对使用jszip有疑问。像这样的代码



Directory.ReadWrite.All






 for (var i = 0; i < files.length; i++) {
                    compressFiles(files[i], compressName);
                }
&#13;
&#13;
&#13;

我的问题是我文件中的文件非常大,大约88米。一些文件压缩大约是0m我想原因是异步,循环将文件流逐个放入内存,如果内存已满,压缩文件。那么谁能告诉我真正的原因呢?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用数组来保持zip.file调用和jQuery.when等待所有这些调用完成,然后调用zip.generateAsync。示例代码如下。

有用的链接:
jQuery.when
What does $.when.apply($, someArray) do?

function zipFiles(images) {
    var zip = new JSZip();
    deferreds = [];
    images.forEach(function(image) {
        deferreds.push(zip.file(image.name, image.data, { binary: true }));
    });
    $.when.apply($, deferreds).then(function() {
        zip.generateAsync({ type: "blob" }).then(function(content) {
            saveAs(content, 'Filename.zip'); //FileSaver.js
        });
    });
}