美文网首页
Dart中的async await

Dart中的async await

作者: qmr777 | 来源:发表于2020-11-03 15:57 被阅读0次

看了很多网上的例子,很简单的东西但是有人把它写的超级复杂。。。。。所以记录一下

async:标记某个方法为异步方法(耗时方法),在声明方法的时候使用
await:等待某个异步方法<执行完毕>。是“等待”,所以要在调用耗时方法的时候使用


void main(){
  fun1();
  fun2();//没有await 虽然耗时 但是不需要等待
  fun3();
  fun4();
}


void fun1(){
  print('fun1');
}

void fun2() async{ //声明耗时方法 使用async
  print('fun 2 pre');
  await Future.delayed(Duration(seconds: 2)); //调用耗时方法,使用await
  print('fun 2 after');
}

void fun3(){
  print('fun3');
}

void fun4() async{
  Future.delayed(Duration(seconds: 5));
  print('fun4');
}

1.首先执行fun1()

2.执行fun2(),输出fun2 pre
这里fun2()没有继续执行,要等待await Future.delayed(Duration(seconds: 2));执行完毕
或者说fun2()内部阻塞在这里

fun2()没有用-await-修饰,所以不需要等待,main方法继续走
3.执行fun3()

4.执行fun4(),开始执行Future.delayed
fun4内部的Future.delay也是一个耗时方法,但是没有用await修饰,所以不等待,直接输出fun4
注意和fun2的区别

等两秒(也就是await Future.delayed(Duration(seconds: 2)))执行完,输出fun 2 after
fun2执行完毕

继续等3秒,fun4内部的Future.delayed(Duration(seconds: 5))执行完
fun4完

整个main方法执行完,退出

fun1
fun 2 pre
fun3
fun4
//等两秒
fun 2 after
//再等3秒
Process finished with exit code 0

还不明白的可以在fun2前面加个await再试一下

相关文章

网友评论

      本文标题:Dart中的async await

      本文链接:https://www.haomeiwen.com/subject/anzbvktx.html