目录

co 模块的原理

2019年09月17日 10:40 | 74次浏览

为什么 co 可以自动执行 Generator 函数?


前面说过,Generator 就是一个异步操作的容器。它的自动执行需要一种机制,当异步操作有了结果,能够自动交回执行权。


两种方法可以做到这一点。


(1)回调函数。将异步操作包装成 Thunk 函数,在回调函数里面交回执行权。


(2)Promise 对象。将异步操作包装成 Promise 对象,用then方法交回执行权。


co 模块其实就是将两种自动执行器(Thunk 函数和 Promise 对象),包装成一个模块。使用 co 的前提条件是,Generator 函数的yield命令后面,只能是 Thunk 函数或 Promise 对象。如果数组或对象的成员,全部都是 Promise 对象,也可以使用 co,详见后文的例子。


上一节已经介绍了基于 Thunk 函数的自动执行器。下面来看,基于 Promise 对象的自动执行器。这是理解 co 模块必须的。



感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程