Dart 语法:sync*、async、async*、yield、yield*、await 笔记

类型 关键字 返回类型 搭档
多元素同步 sync* Iterable<T> yield、yield*
多元素异步 async* stream<T> yield、yield*、await
单元素同步 async Future<T> await

yield、yield* 实例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
void main() {
    getEmojiWithTime(10_.forEach(print);
}

Iterable<String> getEmojiWithTime(int count) sync* {
    yield* getEmoji(count).map((e) => '$e -- Demo');
}

Iterable<String> getEmoji(int count) sync* {
    Runes first = Runes('\u{1f47f}');
    for (int i = 0; i < count; i++) {
        yield String.fromCharCodes(first.map((e) => e + i));
    }
}

注意事项

关于 yield*,其在 sync* 中使用时,后面的表达式应是一个 Iterable<T> 对象。在 async* 中使用时,后面的表达式应为一个 stream<T> 对象。

如有错误欢迎指正,不胜感激。