【问题标题】:How to return data from two nested callback function in nodejs如何从nodejs中的两个嵌套回调函数返回数据
【发布时间】:2019-07-28 18:43:17
【问题描述】:

我需要返回 s3Url 数组。如何返回 s3Url 数组并建议我是否有其他最佳方式将数据上传到 s3 并返回 s3Url

exports.s3Media = fileName => {
          let s3Url = [];
          (async () => {
            for (let i = 0; i < 6; i++) {
              await fs.readFile(`${fileName[i]}`, (err, data) => {
                if (err) throw err;
                const params = {
                  Bucket: `research-1`,
                  Key: fileName[i],
                  Body: JSON.stringify(data, null, 2)
                };
                s3.upload(params, function(s3Err, data) {
                  if (s3Err) throw s3Err;
                  s3Url.push(data.location);
                });
              });
            }
            return s3Url;
          })();
        };

【问题讨论】:

    标签: node.js fs aws-sdk-js


    【解决方案1】:

    您的代码还有更多问题。您没有以正确的方式使用 Async/Await。

    1. 看看 Async/Await:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

    2. 如果您想使用 Async/Await,您必须承诺 readFile(),请在此处查看此答案:reading file with ES6 promises

    3. 你为什么在 s3Media 中使用自调用 fn,也许你可以使整个 fn 异步(这将返回一个承诺)

    4. 返回位置不对

    你自己挖一点,你就会到达那里。希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-20
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      相关资源
      最近更新 更多