Node.js 等待异步方法完成

Node.js 等待异步方法完成,node.js,asynchronous,Node.js,Asynchronous,我正在编写一个NodeJS函数,它解压缩一个文件并进一步读取解压缩后的文件以进一步处理。问题是,在异步解压缩文件之前,read函数启动,失败并出现file not found错误。请建议在读取文件触发之前等待解压过程的可能方式 看看这里: Node Hero-了解Node.js中的异步编程 这是名为Node Hero的教程系列的第三篇文章——在这些章节中,您可以学习如何开始使用Node.js并使用它交付软件产品 在本章中,我将指导您了解异步编程原则,并向您展示如何在JavaScript和Nod

我正在编写一个NodeJS函数,它解压缩一个文件并进一步读取解压缩后的文件以进一步处理。问题是,在异步解压缩文件之前,read函数启动,失败并出现file not found错误。请建议在读取文件触发之前等待解压过程的可能方式

看看这里:

Node Hero-了解Node.js中的异步编程

这是名为Node Hero的教程系列的第三篇文章——在这些章节中,您可以学习如何开始使用Node.js并使用它交付软件产品

在本章中,我将指导您了解异步编程原则,并向您展示如何在JavaScript和Node.js中实现异步。

async library()

此库用于控制所拥有函数的执行

例如:

async.series({
    unzip: function(callback) {
        unzip('package.zip', function(err, data) {
            if(!err)
               callback(null, data);
        });
    }
}, function(err, results) {
    // results is now equal to: {unzip: data}
    readingUnzipFiles(...);
});
在这里,一旦解压任务调用回调函数,就会执行readingUnzipFiles

本票

另一种解决方案是使用类似Q()的promisse模块:

然后您可以使用如下功能:

unzip('file.zip', '/output').then(function() {
    processZipFiles();
});

谢谢你的回答,我已经得到它与以下代码工作-

fs.createReadStream('master.zip')
.pipe(unzip.Extract({ path: 'gitdownloads/repo' }))
.on('close', function () {
...
});

谢谢我的解压函数将许多文件写入文件系统,我只想在所有文件都被写入后读取它们以进行处理。上面的例子能解决这个问题吗?我使用fs.writeFile()函数来编写每个文件。是在写入所有文件后获取回调的一种方法。谢谢你更新你的代码实现来看看?哪篇文章?我看不到答案部分的链接。如果您找到帮助,请标记为答案或向上投票
fs.createReadStream('master.zip')
.pipe(unzip.Extract({ path: 'gitdownloads/repo' }))
.on('close', function () {
...
});