像其他程序语言一样,dart主程序也是单线程执行的。
如下的程序:
String Step1() {
return "Step1";
}String Step2() {
return "Step2";
}String Step3() {
return "Step3";
}void testA() {
print(Step1());
print(Step2());
print(Step3());
}
将按顺序执行,并返回:
Step1
Step2
Step3
【flutter学习|Dart语言Future、async、await异步(十)】当我们执行大文件的加载或者从网络上执行下载的时候,如果时间过长,将会导致主程序阻塞。这可能不是我们所期望的。所以在dart中,引入了异步的概念,也就是标题中的关键字async、await。
使用await的方法必须使用async进行标记。如下示例:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
//await FlutterDownloader.initialize();
//await Permission.storage.request();
if (UniversalPlatform.isAndroid) {
await AndroidInAppWebViewController.setWebContentsDebuggingEnabled(true);
}
使用Future,等待异步执行完成,并执行特定操作:
// 假设method1是网络请求
Future f1 = new Future(method1);
//此时f1就是未来的结果
// 未来的结果获取,使用then
f1.then((String value) {
print("value1=$value");
});
使用Future,等待多个异步方法执行完成,并根据结果集,执行特定操作:
Future method5() async {
return "5";
}Future method6() async {
return "6";
}Future method7() async {
return "7";
}void testE() {
Future.wait([method5(), method6(), method7()]).then((List responses) {
print(responses);
}).catchError((e) {
print(e);
});
}
使用Future,等待多个异步方法执行完成,并按特定顺序执行(例子中,需要按顺序执行求和):
Future method8() async {
return 8;
}Future method9(int p) async {
return p+9;
}Future method10(int p) async {
return p+10;
}void testG() {
method8().then((value8) {
print("value8=$value8");
return method9(value8);
}).then((value9) {
print("value9=$value9");
return method10(value9);
}).then((value10) {
print("value10=$value10");
});
}
推荐阅读
- flutter学习|FLUTTER PUB GET失败(八)
- flutter学习|flutter+Dart 类的继承extends with implements (九)
- flutter|Flutter的button的按钮ElevatedButton
- Android开发|Flutter 2.10 正式发布,包含 Windows 平台正式版,快来看看有什么新内容
- 在 Flutter 中更快地加载图像资源!
- Flutter|用flutter封装一个点击菜单工具栏组件【checkBox多选版】
- flutter学习|flutter+Dart类的创建(六)
- 工具|要一统江湖(Google发布Flutter2)
- 有道技术团队|有道词典Flutter架构与应用