es6 关于yield的疑问

查看:65
本文介绍了es6 关于yield的疑问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

生成器函数中使用yield就能表示异步了?我只了解迭代器的用法(跟python很像),关于为什么这样写就表示异步,实在没想明白。感觉只是让生成器函数的执行可以停在yield的地方?不知道怎么理解才对,请大神解释下~

解决方案

生成器函数中的yield语句只是把控制权转移到了调用者,并不一定是异步的 -- 如果调用者在同一个tick中将控制权转回到生成器函数那肯定还是同步的;而对应的,如果使用 co 这种异步执行的调用者,则就能异步执行了。

具体原理你可以直接查看 co 的源代码。或者很多大神已经分析过了,比如参考以下两篇文章:

阮大的:co 函数库的含义和用法
何大的:co.js 异步回调的原理

这篇关于es6 关于yield的疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆