我使用的是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元素的数据属性,但我不认为它是真正完美的解决方案。
我会建议使用Promises
和新async
和await
关键字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");