gpt4 book ai didi

asynchronous - await 表达式只能在异步函数中使用

转载 作者:行者123 更新时间:2023-12-03 02:46:40 25 4
gpt4 key购买 nike

我试图在用户登录时从 Firestore 加载一些数据,并且需要等到数据加载后再继续。但是,我等待结果的努力没有奏效。

Future<bool> userListener() async {
_auth.onAuthStateChanged.listen((firebaseUser) {
bool isDone = false;

if (firebaseUser != null) {
isDone = await loadUserData(firebaseUser); // This line is killing me!!
return isDone;
} else {
return false;
}
}, onError: (error) {
print('error in UserListener: $error');
});
}

Future<bool> loadUserData(FirebaseUser user) async {
Firestore database = Firestore();
DocumentReference data = database.collection('userData').document(user.uid);

try {
DocumentSnapshot myQuery = await data.get();
theNumber = myQuery.data['theNumber'];
return true;
} on PlatformException catch (e) {
print(e);
return false;
}
}

我从行中得到一个可爱的错误:
 isDone = await loadUserData(firebaseUser);

await 表达式只能用于异步函数 ”。

我不确定这些函数如何变得更加异步。此外,如果我不添加 await然后我被告知不能将 Future 分配给 bool,这是完全有道理的,并向我建议我的函数实际上是异步的。

为什么我不能等待我的 loadUserData的结果功能?

最佳答案

该行的主要功能是传递给 onAuthStateChanged 的​​监听。此功能也应该是异步的,如下所示

  _auth.onAuthStateChanged.listen((firebaseUser) async{

关于asynchronous - await 表达式只能在异步函数中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60154879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com