javascript - 重构 promise 从函数返回

标签 javascript asynchronous async-await

我正在使用 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。我怎样才能使这个异步,以便它在一个函数中返回解压缩的目录,如果我想设置一个等于它的输出的变量将等待它完成?

最佳答案

您需要首先 promise fs.readFile - 然后只需一个常规的 Promise 链就可以做到这一点

例如

function unzipFile(filename){
    return new Promise((resolve, reject) => fs.readFile(filename, function(err, data) {
        if(err) {
            return reject(err);
        }
        resolve(data);
    }))
    .then(data => new jsZip().loadAsync(data))
    .then(zip => zip.files);
}

关于javascript - 重构 promise 从函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42990563/

相关文章:

javascript - Express Session 未使用 Expression session 存储在 redis 中 - connect redis

kotlin - 如何在不阻塞调用函数的情况下从另一个挂起函数调用挂起函数?

javascript - 异步编程: yield vs async/await

c# - 在 akka.net actor 中使用 async/await 是否安全

javascript - 如何在 onChangeMonthYear 之后禁用 jQuery UI Datepicker 中的日期

javascript - jQuery,更改切换上单击元素的文本正在更改下一个 div

javascript - 告诉两个给定时间值之间的秒数

javascript - 使用 Async Await 中的 Promise 数据

Javascript SignalR 等到服务广播所有消息

flutter - 第一个功能太慢,该怎么办?