生成器函数中使用yield就能表示异步了?我只了解迭代器的用法(跟python很像),关于为什么这样写就表示异步,实在没想明白。感觉只是让生成器函数的执行可以停在yield的地方?不知道怎么理解才对,请大神解释下~
生成器函数中的yield语句只是把控制权转移到了调用者,并不一定是异步的 -- 如果调用者在同一个tick中将控制权转回到生成器函数那肯定还是同步的;而对应的,如果使用 co 这种异步执行的调用者,则就能异步执行了。 具体原理你可以直接查看 co 的源代码。或者很多大神已经分析过了,比如参考以下两篇文章: 阮大的:co 函数库的含义和用法何大的:co.js 异步回调的原理
生成器函数中的yield语句只是把控制权转移到了调用者,并不一定是异步的 -- 如果调用者在同一个tick中将控制权转回到生成器函数那肯定还是同步的;而对应的,如果使用
co
这种异步执行的调用者,则就能异步执行了。具体原理你可以直接查看
co
的源代码。或者很多大神已经分析过了,比如参考以下两篇文章:阮大的:co 函数库的含义和用法
何大的:co.js 异步回调的原理