Javascript 如何在react.js中实现jszip

Javascript 如何在react.js中实现jszip,javascript,api,promise,redux-saga,jszip,Javascript,Api,Promise,Redux Saga,Jszip,我试图在通过http请求发送之前压缩文件列表。但我被困在这里了 export default function zipTargetFiles(files) { if (files.length <= 1) { return files; } else { const zip = require('jszip')(); for (let i = 0; i < files.length; i++) {

我试图在通过http请求发送之前压缩文件列表。但我被困在这里了

export default function zipTargetFiles(files) {
    if (files.length <= 1) {
        return files;
    } else {
        const zip = require('jszip')();
        for (let i = 0; i < files.length; i++) {
            zip.file(files[i].name, files[i]);
    }
    return zip.generateAsync({type:"blob"});
}

发生的事情是,
.generateAsync
正在返回一个承诺。您必须等到承诺兑现或被拒绝后才能使用数据

承诺是JS中处理异步操作时的核心概念。你可以阅读更多关于承诺的内容


要下载并命名.zip文件夹,您需要从中选择saveAs()


知道了!但是我怎样才能澄清文件的名称呢?现在,当我将它保存在后端时,它只显示为“blob”,没有扩展名.zip
const file = yield call(zipTargetFiles, files);
const formData = new FormData();
formData.append("coversheet", file);
const reponse = yield call(apiRequest, formData);
import zipTargetFiles from '/path'

zipTargetFiles( data ).then(file => {
 // Access your file here
})
import { saveAs } from "file-saver";

  zip
    .generateAsync({
      type: "blob"
    })
    .then(content => {
      saveAs(content, "fileName.zip");
    });