[英]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
和新的async
和await
關鍵字。 它使您的代碼更易於閱讀。
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.