flutter学习|Dart语言Future、async、await异步(十)

像其他程序语言一样,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"); }); }


    推荐阅读