3.8 5种 yieldable
最后更新于:2022-04-01 23:33:17
# 5种 yieldable
yieldable本来是没有这个词的,因为在Generator里可以是yield关键词,而yield后面接的有5种可能,故而把这些可以yield接的方式成为yieldable,即可以yield接的。
* Promises
* Thunks (functions)
* array (parallel execution)
* objects (parallel execution)
* Generators and GeneratorFunctions
这里我把co和promise做了简单的关键,同时区分Yieldable里的并行和顺序执行处理方式,以便大家能够更好的理解co和Yieldable。
![Co](https://i5ting.github.io/wechat-dev-with-nodejs/async/img/co.png)
* 顺序执行
* Promises
* Thunks
* 并行
* array
* objects
无论是哪种,它们其实都可以是Promise,而既然是Thunk对象,它们就可以thenable,而co v4.6版本的执行的返回值就是Promise,至此完成了左侧闭环。
至于Generator和GeneratorFunction就要从yield和yield*讲起,在koa 1.x和2.x里有明显的应用。
最关键的是,Generator是用来计算的迭代器,它是过渡性的产物。yiedable足够强大,只是学习成本稍高,理解起来也有些难度。
';