Flutter学习笔记 --异步编程Future、async和await

在Dart语言中,异步操作是用Future对象来执行的,并且使用时还需要搭配async以及await关键字。

Future表示未来的意思,它代表将来函数的运算结果的对象,结果可能在未来的某个时刻知道。

在Dart语言中,Future由dart:async库提供,如果返回Future函数,将会发生以下两件事情:

  • 这个函数加入待完成的队列并返回一个未完成的Future对象
  • 当操作结束后,Future会返回一个值或者返回错误。

所以在声明一些包含耗时操作的函数时,需要用Future作为返回类型。如果一个方法的返回类型是Future,而函数内部并没有耗时操作,这是没有必要的

eg:

(1)

void main() async {
  print("0000");
  happy();
  print("1111");
}

Future happy() async {
  Future.delayed(Duration(seconds: 5));
  print("Happy Day");
  return null;
}

happy函数的返回值虽然是Future,但不是一个耗时函数,函数内部调用的Future.delayed()是一个耗时函数,但是没有用await,所以程序执行到这里时并不会阻塞,直接跳过执行了print("Happy Day"),执行结果如下:

I/flutter: 0000
I/flutter: Happy Day
I/flutter: 1111

(2)

void main() async {
  print("0000");
  happy();
  print("1111");
}

Future happy() async {
  await Future.delayed(Duration(seconds: 5));
  print("Happy Day");
  return null;
}

加上await后,函数happy()就是一个耗时函数,所以执行结果是:

I/flutter: 0000
I/flutter: 1111
I/flutter: Happy Day

(3)

void main() async {
  print("0000");
  await happy();
  print("1111");
}

Future happy() async {
  await Future.delayed(Duration(seconds: 5));
  print("Happy Day");
  return null;
}

执行结果:

I/flutter: 0000
I/flutter: Happy Day
I/flutter: 1111
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值