用Dart语言来写异步程序
Posted 郭霖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Dart语言来写异步程序相关的知识,希望对你有一定的参考价值。
https://blog.csdn.net/haojiagou
async 和 await
void main() {
getName1();
getName2();
getName3();
}
getName1() async {
await getStr1();
await getStr2();
print('getName1');
}
getStr1() {
print('getStr1');
}
getStr2() {
print('getStr2');
}
getName2() {
print('getName2');
}
getName3() {
print('getName3');
}
getStr1
getName2
getName3
getStr2
getName1
then,catchError,whenComplete
void main() {
new Future(() => futureTask())//异步任务的函数
.then((i) => "result:$i")//任务执行完后的子任务
.then((m) => print(m)); //其中m为上个任务执行完后的返回的结果
}
futureTask() {
return 10;
}
result:10
new Future(() => futureTask())//异步任务的函数
.then((i) => "result:$i")//任务执行完后的子任务
.then((m) => print(m)) //其中m为上个任务执行完后的返回的结果
.then((_) => Future.error("出错了"));
result:10
Unhandled exception:
出错了
#0 _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:1114:29)
#1 _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#2 _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
#3 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:393:30)
#4 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:418:5)
#5 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)
new Future(() => futureTask())//异步任务的函数
.then((i) => "result:$i")//任务执行完后的子任务
.then((m) => print(m)) //其中m为上个任务执行完后的返回的结果
.then((_) => Future.error("出错了"))
.catchError(print);
result:10
出错了
以上是关于用Dart语言来写异步程序的主要内容,如果未能解决你的问题,请参考以下文章