gpt4 book ai didi

amazon-web-services - 同步从 AWS lambda.invoke 获取值(value)

转载 作者:行者123 更新时间:2023-12-04 01:51:48 25 4
gpt4 key购买 nike

我正在尝试使用 invoke 方法和 RequestResponse 调用类型从另一个 Lambda 函数调用 AWS Lambda 函数,并检索从 Lambda 返回的值。

当我使用 await 调用 lambda.invoke 时,回调似乎仍被异步调用。我想要我需要在下一行代码中可用的值,因此是同步要求。但是,在下面的日志代码中,我看到“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);
}

谢谢,

克里斯

最佳答案

AWS-SDK 已经 promise 。如果您想使用 8.10 运行时和 try && catch block ,则只需使用以下代码段:

    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);
}
}

关于amazon-web-services - 同步从 AWS lambda.invoke 获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52630935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com