【发布时间】:2021-03-11 16:23:58
【问题描述】:
我想在从同步函数返回之前调用并等待异步函数完成
// async function
Future<User> getUser(String username) async {
...
}
在 dart 中,我可以使用 https://api.dart.dev/stable/2.9.2/dart-cli/waitFor.html 等待异步函数,然后再转到下一条语句。
bool checkUser(String username, String encodedPwd) {
var user = waitFor<User>(getUser(username));
if (user.pwd == encodedPwd)
return true;
else
return false;
}
由于框架的要求,checkUser函数会被框架调用,必须是同步函数。
在颤振中,我无法使用 dart:cli,我通过模式 .then() .whenComplete() 实现,但是当调用 checkUser 时,将调用语句 print(1) 并结束函数,而无需等待 getUser 完成。
bool checkUser(String username, String pwd) {
getUser(username).then((user) {
if (user.pwd == encodePwd(pwd)) {
return true;
} else {
return false;
}
);
print(1);
}
我的问题是如何在同步函数中调用异步函数并等待异步函数完成后再返回。
谢谢。
【问题讨论】:
-
函数
getUser()是一个Future。所以显然同步语句print(1)会先被执行。 -
如果您需要等待异步函数完成,您需要使用
await,并且您只能在异步函数中使用await,我猜您正在考虑一些过度工程这里
标签: flutter