dart 系列之: 在 dart 中使用生成器
简介
ES6 中在引入异步编程的同时,也引入了 Generators,通过 yield 关键词来生成对应的数据。同样的 dart 也有 yield 关键词和生成器的概念。
什么时候生成器呢?所谓生成器就是一个能够持续产生某些数据的装置,也叫做 generator。
两种返回类型的 generator
根据是同步生成还是异步生成,dart 返回的结果也是不同的。
如果是同步返回,那么返回的是一个 Iterable 对象.
如果是异步返回,那么返回的是一个 Stream 对象。
同步的 generator 使用 sync*关键词如下:
异步的 generator 使用的是 async* 关键词如下:
生成关键词使用的是 yield。
如果 yield 后面跟着的本身就是一个 generator,那么需要使用 yield*。
Stream 的操作
stream 表示的是流,得到这个流之后,我们需要从流中取出对应的数据。
从 Stream 中取出数据有两种方式,第一种就是使用 Stream 本身的 API 来获取 Stream 中的数据。
最简单的就是调用 stream 的 listen 方法:
listen 可以接数据的处理方法,具体使用如下:
默认的方法是 onData 方法。
另外一种就是今天要讲解的 await for.
await for 的语法如下:
要注意的是上面的 expression 必须是一个 Stream 对象。并且 await for 必须用在 async 中,如下:
如果要想中断对 stream 的监听,则可以使用 break 或者 return。
总结
以上就是 dart 中生成器的使用了。
本文已收录于 http://www.flydean.com/13-dart-generators/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
版权声明: 本文为 InfoQ 作者【程序那些事】的原创文章。
原文链接:【http://xie.infoq.cn/article/571ec6831ffc92458afb624e1】。文章转载请联系作者。
评论