【发布时间】:2017-03-24 02:47:17
【问题描述】:
我正在使用 JSZip 解压缩一个异步运行的目录。我想编写一个解压缩文件并返回与之关联的文件的函数,如下所示:
function unzipFile(filename){
const zipper = new jsZip()
return fs.readFile(filename, function(err, data) {
return jsZip.loadAsync(data).then(function(zip) {
return zip.files
})
})
}
但这只是返回undefined。我怎样才能使这个异步,以便它在一个函数中返回解压缩的目录,如果我想设置一个等于它的输出的变量将等待它的完成?
【问题讨论】:
-
因为在常规回调中返回(您也不这样做)没有效果
-
你甚至没有使用
zipper- 所以,无论如何,基本面都是错误的 -
不可能。学会适应回调。您可以使用 async/await 关键字作为 Promise 的语法糖,使其看起来像您正在返回值,但在某种程度上,异步函数仍然返回一个 Promise,因此在某些时候您无论如何都需要处理回调。我个人强烈建议人们在理解回调和承诺之前不要使用 async/await。
标签: javascript asynchronous async-await