我正在使用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的结果。
实际输出:承诺{“待处理”} :“待处理” :PromiseProto {…}
答案 0 :(得分:2)
scanDb
是一个异步函数,因此它将必然返回一个promise。所有异步函数都返回承诺。要么按该诺言调用.then,要么在异步函数中使用它,然后等待其结果。
scanDb()
.then(resultDb => {
console.log(resultDb);
});
async function someFunction() {
const resultDb = await scanDb();
console.log(resultDb);
}
答案 1 :(得分:0)
Await仅在异步函数内部起作用,因此它将在异步之后的await之后保存代码。我试图在异步之外获取scanDb()函数的值。这就是我的代码没有等待的原因。
非常感谢尼古拉斯。