为了账号安全,请及时绑定邮箱和手机立即绑定

为什么带有回调的函数不在异步函数内执行?

为什么带有回调的函数不在异步函数内执行?

www说 2023-09-14 17:57:22
我正在使用 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();


查看完整回答
反对 回复 2023-09-14
  • 1 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信