Dart语言入门学习-异步支持(七)

处理 Future

使用 async 和 await 关键字的代码是异步的。要使用 await,代码必须在异步函数(使用 async 标记的函数)中,await表示等待异步函数的执行结果。

Future checkVersion() async {
  var version = await lookUpVersion();
  // Do something with version
}

在 await 表达式中, 表达式的值通常是一个 Future 对象; 如果不是会被自动包装成一个 Future 对象。await 表达式 执行的结果为这个返回的对象。 await 表达式会阻塞代码的执行,直到需要的对象返回为止。这个和java的Future很像,有await标记的函数在调用的时候,调用函数必须要有async

声明异步函数

比如下面的一段代码,获取版本号

String lookUpVersion() => '1.0.0';

如果实现非常耗时,将其更改为异步函数,返回值是 Future 。

Future<String> lookUpVersion() async => '1.0.0';

注意,函数体不需要使用Future API。 如有必要, Dart 会创建 Future 对象。
如果函数没有返回有效值, 需要设置其返回类型为 Future 。

处理 Stream
await for (varOrType identifier in expression) {
  // Executes each time the stream emits a value.
}

上面 表达式 返回的值必须是 Stream 类型。 执行流程如下:
1,等待,直到流发出一个值。
2,执行 for 循环体,将变量设置为该发出的值
3,重复1和2,直到关闭流。
break和return 语句可以停止接收 stream 的数据

Future main() async {
  // ...
  await for (var request in requestServer) {
    handleRequest(request);
  }
  // ...
}
生成器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据结构和算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值