【发布时间】:2019-05-02 09:03:18
【问题描述】:
尝试发送多条消息(来自 AWS SQS lambda,如果这很重要),但它从不等待承诺。
function getEndpoint(settings){
return new Promise(function(resolve, reject) {
// [...] more stuff here
}
然后循环调用:
exports.handler = async (event) => {
var messages = [];
event.Records.forEach(function(messageId, body) {
//options object created from some stuff
messages.push(getEndpoint(options).then(function(response){
console.log("anything at all"); //NEVER LOGGED
}));
});
await Promise.all(messages);
};
但是 await 似乎完全被跳过了。我不确定我是如何通过明确的await 获得Process exited before completing request 的。我在其他有效的脚本中有类似的异步等待/承诺设置,但无法发现我在这个脚本中做错了什么。
【问题讨论】:
-
介意分享更多代码吗?这段摘录看起来不错。
-
@enapupe 添加了远程调用功能,但这真的只是整个事情
-
希望看到主要调用的 fn 主体.. 您仅分享了其中的一部分。
getEndpoint部分似乎没问题 -
@enapupe 除了实际的 https 呼叫设置(出于安全原因,我无法分享),一切都在这里。但如果这是问题所在,我会收到错误,不是吗?
标签: node.js async-await aws-lambda amazon-sqs