我正在使用 AWS SDK,并使用 Lambda 运行此代码。我注意到,当我在异步函数中使用带有回调的上传函数时,它不会执行该函数。const aws = require('aws-sdk');exports.handler = async (event) => { const s3 = new aws.S3(); console.log('START UPLOAD') const params = { Bucket: 'practice-bucket', Key: 'hello.txt', Body: "hello", } s3.upload(params, function(err, data) { console.log(err, data); });};我知道如何进行这项工作。可以通过将函数更改为非异步函数,或者使用await 并将upload() 的响应转换为promise。但我仍然好奇为什么它不执行 upload() 函数?我希望它只是执行一个常规函数,因为我没有告诉它等待。
1 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
这就是 Javascript 的事件循环如何与异步函数配合使用,在您的情况下,函数在 s3.upload 完成之前返回。
您可以通过将 s3.upload 转换为 Promise,然后使用 wait 获取结果并阻止异步处理程序的返回来解决此问题
await result = s3.upload(params).promise();
添加回答
举报
0/150
提交
取消