如何从Node.js中的两个嵌套回调函数返回数据

时间:2019-07-28 18:43:17

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

我需要返回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;
          })();
        };

1 个答案:

答案 0 :(得分:0)

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

  1. 看看异步/等待: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. 退货位置不正确

自行挖一点,您便会到达那里。希望对您有所帮助。