javascript - JavaScript 不等待承诺解决。使用 Async /Await 扫描 AWS DynamoDB 时
问题描述
我正在使用 Javascipt AWS-SDK 扫描 AWS dynamodb。我希望我的代码能够一直执行,直到它从扫描中获得结果。我做错了什么 。
async function scanDb() {
var docClient = new AWS.DynamoDB.DocumentClient();
params = {
TableName: 'testdriveenvs',
FilterExpression : 'EnvStatus = :a',
ExpressionAttributeValues : {':a' : 'Inuse'}
};
var objectPromise = await docClient.scan(params).promise().then((data) => {
return data.Items
});
return objectPromise;
}
var resultDb = scanDb();
console.log ("Result",resultDb);
预期输出:来自 DynamoDB 的扫描结果。
实际输出: Promise { "pending" } : "pending" : PromiseProto { ... }
解决方案
scanDb
is an async function, so it will necessarily return a promise. All async functions return promises. Either call .then on that promise, or use it in an async function and await its result.
scanDb()
.then(resultDb => {
console.log(resultDb);
});
async function someFunction() {
const resultDb = await scanDb();
console.log(resultDb);
}
推荐阅读
- unix - 使用 sed 命令从第 2 次替换到第 4 次出现
- laravel - 当我制作 PDF 时,错误是 Laravel 的 dompdf 中的“尝试访问类型为 null 的值的数组偏移量”
- r - 搜索 Scopus 搜索 API 时出错并将结果批量保存到 xml 文件中
- react-native - 错误:无法从`index.js`解析模块`react`:在项目中找不到react
- reactjs - 如何获取要在打字稿的图像 ID 列中作为值输入的上传图像的标题?
- performance - 使用 Jmeter 的吞吐量和响应时间
- python - python脚本在编写为函数时不起作用
- android - 错误:未设置 ANDROID_HOME 环境变量
- java - 如何使用捆绑将数据从片段传递到活动
- apache - 如何使用 apache 重写 URL