首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取zip文件内容并将其分配给局部变量

读取zip文件内容并将其分配给局部变量
EN

Stack Overflow用户
提问于 2018-08-20 06:21:10
回答 1查看 3.7K关注 0票数 1

我希望读取包含多个文件的zip文件的内容,并从所有文件中合并内容,并将其分配给局部变量。但是局部变量不在下面的代码中:

代码语言:javascript
复制
const jsZip = require('jszip');
  jsZip.loadAsync(fileList[0]).then(function (zip) {
    Object.keys(zip.files).forEach(function (filename) {
      zip.files[filename].async('string').then(function (fileData) {
         this.fileData = this.fileData + '**$$##$$**' + fileData;
      });
    });
  });

这里没有定义‘这’,因为它是在jszip的上下文中执行的。也尝试了‘jszip同步’,但没有运气。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-20 06:23:24

只需将所有function (){}更改为()=>{}肥箭

代码语言:javascript
复制
const jsZip = require('jszip');
  jsZip.loadAsync(fileList[0]).then((zip) => { // <----- HERE
    Object.keys(zip.files).forEach((filename) => { // <----- HERE
      zip.files[filename].async('string').then((fileData) => { // <----- HERE
         this.fileData = this.fileData + '**$$##$$**' + fileData;
      });
    });
  });

不工作的原因: --然而,当您使用function() {}时,它通常会失去根元素的上下文,为了维护上下文,应该使用fat箭头。 你可以找到很多关于脂肪箭的伟大文章,我刚刚提供了其中之一。 直到箭头函数,每个新函数都定义了自己的这个值(基于函数的调用方式,构造函数的新对象,在严格模式函数调用中未定义的对象,如果函数被调用为“对象方法”,则为基对象,等等)。事实证明,使用面向对象的编程方式并不理想。 更详细

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51925056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档