JavaScript不等待承诺解决.当使用异步 /等待扫描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 {" perdend"}: "待办的":PromiseProto {…}

scanDb是一个异步函数,因此必须返回承诺。所有异步函数返回承诺。致电。

scanDb()
  .then(resultDb => {
    console.log(resultDb);
  });
async function someFunction() {
  const resultDb = await scanDb();
  console.log(resultDb);
}

等待在异步函数内部工作,因此它将在等待中保存代码,该代码位于异步内部。我试图在异步之外获得scandb((函数的价值。这是我的代码不等待的原因。

非常感谢Nicholas。

最新更新