【问题标题】:Node Extracting zip file async using callbacks or events?节点使用回调或事件异步提取zip文件?
【发布时间】:2017-03-28 10:31:02
【问题描述】:

我必须编写一个模块,其任务是在给定两个参数的情况下提取一个 zip 文件zip file's pathdirectory where to extract's path),它应该公开一个执行任务的 方法,然后如果操作成功则触发另一个任务

我主要关心的是:我应该使用回调设计模式还是可观察事件发射器

基本上,我想知道我是否应该公开一个扩展事件模块的对象,该模块可以在extraction-complete 事件上观察到,或者如果成功,我应该使用callback(err, 'ok')

这两种模式之间的巧妙方法是什么?

我的目标是解压缩文件,然后浏览提取的存档内容,并从提取的文件夹中将一些信息写入数据库。该文件夹是一个 zip 文件,其中包含包含图像的文件夹,并且确实有大约 600 个条目

【问题讨论】:

  • 考虑使用 Promise。
  • 我认为这两种方法都是有效的......承诺方法也是一种有效的方法......它只取决于你的design patterns。看看这个列表blog.risingstack.com/fundamental-node-js-design-patterns...只要与你的其余代码保持一致,你应该很好。

标签: node.js events asynchronous callback eventemitter


【解决方案1】:

你可以使用这个命令先安装解压:

npm install unzip

然后使用下面的代码:

var unzip = require('unzip');

var stream = fs.createReadStream('/tmp/file.zip');
stream.pipe(unzip.Extract({ path: '/dest' })
    .on('close', function () {
        // Your callback code will go here...
    })
);

【讨论】:

  • 安装解压缩模块后出现错误。卸载解压缩模块后错误被删除。错误类似于:c:\projects\electron\vendor\node\src\async-wrap.cc:357: Assertion `env->async_hooks_init_function().IsEmpty()' failed.
猜你喜欢
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
相关资源
最近更新 更多