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

问题描述 投票:0回答:1

我使用的是AWS的Javascript SDK,我下面就如何发送SQS消息教程。我基本上跟随它具有AWS tutorial的例子如下sendMessage

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

所以sendMessage函数使用一个回调函数输出操作是否成功与否。而不是打印到控制台我想回到一个变量,但我每次设定值时,才会显示在回调函数中,甚至是全球性的变量,比如window.result不回调函数外可见。有什么办法回调外返回值?

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

javascript amazon-web-services aws-sdk-js
1个回答
1
投票

我会建议使用Promises和新asyncawait关键字ES2016。它使你的代码,以便更容易阅读。

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");
© www.soinside.com 2019 - 2024. All rights reserved.