【问题标题】:Changing code to use async await when using the async module使用异步模块时更改代码以使用异步等待
【发布时间】:2017-08-19 05:44:17
【问题描述】:

我有以下代码可以从 s3 存储桶下载我的文件:

async function downloadS3Files(options) {
  let s3client = new s3fs(options.bucket, s3options),
    files = await s3client.readdirp(options.object);
  return new Promise((resolve, reject) => {
    eachLimit(files, maxAsync, (file, callback) => {
      if ("/" === file.slice("-1")) {
        return callback();
      }
      let source = `${options.object}/${file}`,
        destination = `_input/${source}`;
      debug(destination);
      mkdirp(dirname(destination)).then(() => {
        let stream = s3client.createReadStream(source).pipe(createWriteStream(destination));
        stream.on("error", reject);
        stream.on("close", callback);
      }).catch(reject);
    }, () => {
      resolve(options)
    });
  });
}

它可以工作......但我想避免 eachLimit 部分,因为我不能在 Promise 构造函数中使用 await 。是否有任何其他模块可以帮助我以 Promise 方式处理最多的异步操作?

谢谢。

【问题讨论】:

    标签: node.js amazon-web-services asynchronous amazon-s3


    【解决方案1】:

    是否有任何其他模块可以帮助我以 Promise 方式处理最多的异步操作?

    有几个模块可以帮助您:

    对于更复杂的场景,您可以使用 Task.js - 请参阅:

    但它使用生成器来生成承诺而不是异步/等待。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多