flutter - 如何阻塞直到异步函数完成
问题描述
如何在同步方法中继续执行之前获得异步调用的结果。例如,
main(List<String> arguments) {
String r;
value().then((s) => r = s);
print(r); // prints 'null', how to get 'foo'?
}
Future<String> value() async {
return await "foo";
}
我知道我可以标记主异步并调用await value()
,但我希望主保持同步。知道怎么做吗?
更具体的例子,
class MyWidget extends StatefulWidget {
@override
MyWidgetState createState() => MyWidgetState();
}
class MyWidgetState extends State<MyWidget> {
String emp;
MyWidgetState() {
emp = getEmployee(); // this needs to be called with await
}
@override
Widget build(BuildContext context) {
// use 'emp' to build widget
}
}
static Future<String> getEmployee() async {
var response = await http.get(url);
if (response.statusCode != 200) {
throw HttpException("read error");
}
return response.body;
}
解决方案
推荐阅读
- google-search - 如果很多人点击搜索结果的链接,它会影响 Google 搜索的自动填充预测吗?
- javascript - 如何使用 ionic Media 插件顺序播放多个音频
- reactjs - 反应还原
仅返回存储对象 - docker - AspnetBoilerPlate Docker 部署
- vba - 听写主页功能区 idMso
- python - Python:根据CSV文件中的不同列创建新列和行
- javascript - 如何枚举私有 JavaScript 类字段
- javascript - 将标题转换为图像
- javascript - 带有 Google Recaptcha v3 的 Django 联系表
- javascript - How can i select multiple values in react js?