【发布时间】:2020-03-09 02:35:27
【问题描述】:
async function getP(){
var params = {
Name: 'MY-NAME',
WithDecryption: true
};
var request = await ssm.getParameter(params).promise();
return request.Parameter.Value;
}
async function getParam(){
var resp = await getP()
console.log(resp)
}
getParam()
这是我的 lambda 函数中的代码,目前无法正常工作,我不知道为什么..
当我将其更改为:
const x = getParam()
console.log(x) // it says that this is pending
但我认为异步等待会解决这个问题,有什么想法吗?
编辑:
console.log('first') // never logged
const res = await ssm.getParameter(paramUsername).promise(); // paramUsername deffo exists in SSM
console.log(res, 'res') // never logged
console.log('second') // never logged
【问题讨论】:
-
您需要
await getParam()。方法是async,所以如果你不等待就直接调用它,你会得到一个承诺。要么await它,要么使用通常的promise方法解决它。 -
这也没有用。我认为
ssm.getParamater坏了:/ -
这不是因为我一直在使用它。你只需要正确地等待它。
-
例如,如果 lambda 处理程序是
async handler() { const res = await ssm.getParameter(...).promise(); console.log(res); },那应该会得到你的结果,显然...替换为 ssm 参数等。 -
@404 很明显这里有些东西坏了。我的 lambda 是异步的,我已将其放入:请检查已编辑的问题 lambda 超时,即使设置为 90 秒
标签: javascript node.js aws-lambda