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

for (var i = 0; i < files.length; i++) {
compressFiles(files[i], compressName);
}
&#13;
我的问题是我文件中的文件非常大,大约88米。一些文件压缩大约是0m我想原因是异步,循环将文件流逐个放入内存,如果内存已满,压缩文件。那么谁能告诉我真正的原因呢?谢谢!
答案 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
});
});
}