如何在飞镖中从 conn.query 获取数据

how to get data from conn.query in dart

我正在用 postgresql 做 dart,我不能 return 数据 conn.query(行)。但是结果来了,如何return呢,简单的代码就是

    main(){
     someOtherFunc();
    }
   Future add() async{
   var uri = 'postgres://postgres:root@localhost:5432/testdb';
   var conn = await connect(uri);
   var sql = 'select * from test';
   return conn.query(sql).toList();
 }


 Future someOtherFunc() async {
   print(await add());
 }

我得到 return 作为 "Instance of '_Future'!"

如果您在调用 add() 的函数中使用 await,您将获得所需的结果

Future add() async {
  var uri = 'postgres://postgres:root@localhost:5432/testdb';
  var conn = await connect(uri);
  var sql = 'select * from test';
  return conn.query(sql).toList();
}

Future someOtherFunc() async {
  print(await add());
}

async 具有传染性。当你调用异步函数时,你不能 return 同步执行。依赖于异步结果的所有内容都需要使用 await(或 "old" .then((value) {}))。 async + await 只是制造同步执行的错觉。