繁体   English   中英

JavaScript不等待承诺解决。 使用Async / Await扫描AWS DynamoDB时

[英]JavaScript not waiting for promise to resolve. When using Async /Await to scan 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是一个异步函数,因此它将必然返回一个promise。 所有异步函数都返回承诺。 要么在该Promise上调用.then,要么在异步函数中使用它,然后等待其结果。

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

Await仅在异步函数内部起作用,因此它将在异步内部保存等待的代码。 我试图在异步之外获取scanDb()函数的值,这就是我的代码没有等待的原因。

非常感谢尼古拉斯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM