amazon-web-services - 从 AWS lambda.invoke 同步获取价值
问题描述
我正在尝试使用invoke
具有RequestResponse
调用类型的方法从另一个 Lambda 函数调用 AWS Lambda 函数,并检索从 Lambda 返回的值。
当我调用lambda.invoke
usingawait
回调时,似乎仍然是异步调用的。我想要我需要在下一行代码中可用的值,因此需要同步。但是,在下面的日志代码中,我看到“回调中的数据”条目出现在“回调中的数据”条目之前,回调中的值为 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 已经承诺。如果您想使用 8.10 运行时并尝试&& catch块,则只需使用以下代码段:
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);
}
}
推荐阅读
- python-3.x - 有没有办法在 Azure 数据块中创建日期选择器小部件?
- python - 全局变量/函数的良好实践
- mysql - 无法使用 MySQL 连接器/ODBC 8.0 从 SQL Server 更新链接的 MySQL 表
- python - Author message can be interpreted as integer in discord.py
- javascript - 从 HTML 页面向 XML 文件发送动态数据
- c++ - MSVC C++ 编译器选项,用于防止在 ostream/ofstream 中将 LF 替换为 CR LF
- javascript - React JS Mobile Number Validation
- php - 插入后的 PHP Symfony 问题(如果立即访问)
- c++ - 运行 SYCL/DPC++ 代码时出现意外/错误结果
- java - 何时在 GET 请求中使用 @ModelAttribute