繁体   English   中英

从AWS Javascript SDK中的回调函数返回值

[英]Return value from callback function in AWS Javascript SDK

我正在使用AWS Javascript SDK,并且正在遵循有关如何发送SQS消息的教程。 我基本上遵循的是AWS教程 ,该教程具有sendMessage的示例,如下所示:

sqs.sendMessage(params, function(err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data.MessageId);
  }
});

因此sendMessage函数使用回调函数来输出操作是否成功。 我不想打印到控制台,而是要返回一个变量,但是我设置的每个值仅在回​​调函数中可见,即使像window.result这样的全局变量在回调函数之外也不可见。 有什么办法可以在回调之外返回值?

我目前发现的唯一解决方法是在HTML元素中设置数据属性,但我认为这不是真正的优雅解决方案。

我建议在ES2016中使用Promises和新的asyncawait关键字。 它使您的代码更易于阅读。

async function sendMessage(message) {

    return new Promise((resolve, reject) => {

        // TODO be sure SQS client is initialized
        // TODO set your params correctly 
        const params = {
            payload : message
        };

        sqs.sendMessage(params, (err, data) => {
            if (err) {
                console.log("Error when calling SQS");
                console.log(err, err.stack); // an error occurred
                reject(err);
            } else {
                resolve(data);
            }
        });         
    });
}

// calling the above and getting the result is now as simple as :
const result = await sendMessage("Hello World");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM