Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用回调或事件异步提取zip文件的节点?_Node.js_Events_Asynchronous_Callback_Eventemitter - Fatal编程技术网

Node.js 使用回调或事件异步提取zip文件的节点?

Node.js 使用回调或事件异步提取zip文件的节点?,node.js,events,asynchronous,callback,eventemitter,Node.js,Events,Asynchronous,Callback,Eventemitter,我必须编写一个模块,它的任务是在给定两个参数的情况下提取一个zip文件(zip文件的路径,提取路径的目录),该模块应该公开一个方法来执行任务,然后在操作成功时触发另一个任务 我主要关心的是:我应该使用回调设计模式还是可观察事件发射器模式 基本上,我想知道是否应该公开一个扩展事件模块的对象,该模块可以在extraction complete事件上观察到,或者如果成功,是否应该使用回调(err,'ok') 这两种模式之间的聪明方法是什么 我的目标是解压缩一个文件,然后浏览提取的归档文件的内容,并从提

我必须编写一个模块,它的任务是在给定两个参数的情况下提取一个zip文件(
zip文件的路径
提取路径的目录
),该模块应该公开一个方法来执行任务,然后在操作成功时触发另一个任务

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

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

这两种模式之间的聪明方法是什么


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

您可以使用此命令首先安装解压:

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...
    })
);

您可以使用此命令首先安装解压:

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:断言'env->async\u hooks\u init\u function().IsEmpty()'失败。安装解压模块后我收到错误。卸载解压模块后删除错误。错误看起来像:c:\projects\electron\vendor\node\src\async wrap.cc:357:断言'env->async\u hooks\u init\u function()。IsEmpty()'失败。