我正在尝试使用具有invoke
调用类型的RequestResponse
方法从另一个Lambda函数调用AWS Lambda函数,并检索从Lambda返回的值。
当我使用lambda.invoke
调用await
时,回调似乎仍被异步调用。我想要在下一行代码中需要可用的值,因此需要同步。但是,在下面的日志代码中,我看到“ Data out of Callback”项发生在“ Data in Callback”项之前,回调中有0值,而回调中有正确的值。
如果有人可以帮助我了解如何实现这一目标,我将不胜感激!这是代码:
async readData() {
let myData = [];
const params = {
FunctionName: "MyFunctionName",
InvocationType: "RequestResponse",
};
await lambda.invoke(params, (error, data) => {
if (error) {
console.log("Got a lambda invoke error");
console.error(error);
} else {
let response = JSON.parse(data.Payload);
myData = JSON.parse(response.body);
console.log("Data in Callback: " + myData.length);
}
});
console.log("Data out of Callback: " + myData.length);
}
谢谢
克里斯
答案 0 :(得分:3)
AWS-SDK已经实现。如果要使用8.10运行时并尝试和&& 捕获块,则只需使用以下代码段:
async readData()
{
const params =
{
FunctionName: "MyFunctionName",
InvocationType: "RequestResponse",
};
try
{
const lambdaInvokeResp = await lambda.invoke(params).promise();
// if succeed
// handle your response here
// example
const lambdaRespParsed = JSON.parse(lambdaInvokeResp.Payload);
const myData = JSON.parse(lambdaRespParsed.body);
return myData;
}
catch (ex) // if failed
{
console.error(ex);
}
}
答案 1 :(得分:0)