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