摘要:同步的使用關鍵詞如下異步的使用的是關鍵詞如下生成關鍵詞使用的是。從中取出數據有兩種方式,第一種就是使用本身的來獲取中的數據。并且必須用在中,如下如果要想中斷對的監聽,則可以使用或者。總結總結以上就是中生成器的使用了。
ES6中在引入異步編程的同時,也引入了Generators,通過yield關鍵詞來生成對應的數據。同樣的dart也有yield關鍵詞和生成器的概念。
什么時候生成器呢?所謂生成器就是一個能夠持續產生某些數據的裝置,也叫做generator。
根據是同步生成還是異步生成,dart返回的結果也是不同的。
如果是同步返回,那么返回的是一個Iterable對象.
如果是異步返回,那么返回的是一個Stream對象。
同步的generator使用sync*關鍵詞如下:
Iterable naturalsTo(int n) sync* { int k = 0; while (k < n) yield k++;}
異步的generator使用的是async* 關鍵詞如下:
Stream asynchronousNaturalsTo(int n) async* { int k = 0; while (k < n) yield k++;}
生成關鍵詞使用的是yield。
如果yield后面跟著的本身就是一個generator,那么需要使用yield*。
Iterable naturalsDownFrom(int n) sync* { if (n > 0) { yield n; yield* naturalsDownFrom(n - 1); }}
stream表示的是流,得到這個流之后,我們需要從流中取出對應的數據。
從Stream中取出數據有兩種方式,第一種就是使用Stream本身的API來獲取Stream中的數據。
最簡單的就是調用stream的listen方法:
StreamSubscription listen(void onData(T event)?, {Function? onError, void onDone()?, bool? cancelOnError});
listen可以接數據的處理方法,具體使用如下:
final startingDir = Directory(searchPath); startingDir.list().listen((entity) { if (entity is File) { searchFile(entity, searchTerms); } });
默認的方法是onData方法。
另外一種就是今天要講解的await for.
await for的語法如下:
await for (varOrType identifier in expression) { // Executes each time the stream emits a value.}
要注意的是上面的expression必須是一個Stream對象。并且await for必須用在async中,如下:
Future main() async { // ... await for (final request in requestServer) { handleRequest(request); } // ...}
如果要想中斷對stream的監聽,則可以使用break或者return。
以上就是dart中生成器的使用了。
本文已收錄于 http://www.flydean.com/13-dart-generators/
最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!
歡迎關注我的公眾號:「程序那些事」,懂技術,更懂你!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/124541.html
摘要:數字中定義了三種類型的數字,分別是和。對于小數來說,可以使用來指定小數的位數如果要使用科學記數法的話,可以使用字符串所有的字符串在中都是以進行編碼的,中的定義了很多常用的并且非常有用的方法。總結以上就是中數字和字符串的介紹。目錄簡介數字字符串StringBuffer總結簡介要想熟悉一種語言,最簡單的做法就是熟悉dart提供的各種核心庫。dart為我們提供了包括dart:core,dart:a...
摘要:有兩種依賴信息,一種是所有使用到這個的人都需要用到的依賴,這種依賴放在中。還有一種是只用在當前開發中的包,這種依賴放在中。在某些情況下,我們有可能需要覆蓋某些依賴包,則可以放在中。從之后,中還支持指定的版本總結總結以上就是的元世界詳解。? 目錄 簡介 pubspec.yaml支持的字段 一個例子 字段詳情 總結 ? 簡介 pub...
閱讀 2251·2021-11-23 09:51
閱讀 1080·2021-11-22 15:35
閱讀 4866·2021-11-22 09:34
閱讀 1610·2021-10-08 10:13
閱讀 3026·2021-07-22 17:35
閱讀 2546·2019-08-30 15:56
閱讀 3088·2019-08-29 18:44
閱讀 3100·2019-08-29 15:32