ES6的yield示例分析-创新互联

这篇文章主要讲解了“ES6的yield示例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ES6的yield示例分析”吧!

创新互联公司-专业网站定制、快速模板网站建设、高性价比垫江网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式垫江网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖垫江地区。费用合理售后完善,十载实体公司更值得信赖。

近期ES6标准如火如荼的发展,其中主要还是各大浏览器的支持,最重要厂商支付宝,微信的支持,使得国内的发展也很迅猛。这里主要是对yield关键字的,yield实际上可以看作是一种新的中断机制,大家都知道javascript函数执行是顺序的,中途没有暂停,等待消息只能通过回调或者settimeout等延迟检查来完成。

对ES6的yield示例分析

有些示例说yield和线程有关系,不过我在官方示例中没看出来,好了进入主题,先来看看官方示例。

function*foo(x){

vary=2*(yield(x+1));

varz=yield(y/3);

return(x+y+z);

}

varit=foo(5);

console.log(it.next());

console.log(it.next(12));

console.log(it.next(13));

//返回值是{value:6,done:false},{value:8,done:false},{value:42,done:true}

yield示例要点

第一点:foo需要是*型的,新增的*带来的是这个函数指针,这个函数必须是*型的,否则的话varit=foo(5),就表示得到函数执行的结果,而指针型的,表示it取得该函数。

第二点:第一个it.next()表示开始执行函数,直到第一个yield停止。返回值是yield(表达式的值),这个时候的返回时是x+1,x是5,结果就是6.这里的it.next如果带参数,则参数会被忽略,因为首次执行没有参数可再传递.

第三点:第二个it.next(12)表示上一个yield的返回结果是12,带进去也就是vary=2*12;这个地方必须带值,因为yield内是表达式(x+1),不是常量,无法自己计算,这里为什么不把之前的x缺省带进去计算,只能说目前的机制不是这样,

应该是考虑到实现的复杂程序,因为这里的x是一个变量,实际运行中,这个还可能是表达式,甚至还有作用域的问题考虑,这里计算出的y=2*12=24,一直计算到下一个yield(24/3),结果是8。

第四点:第三个it.next(13)同样表示上一个yield的返回结果是13,带进去也就是varz=13;后面已经没有yield了,就去函数的返回值return5+24+13,结果等于42,这个时候done的值是true,表示函数结束。

重要的总结下:function需要是指针,记住yield(表达式)执行的结果是上一个执行的值。

这样yield的关键字是不是清晰了?

在实际工作中并不是it.next()一定要到函数最终的return,例如第一次执行it.next(),取得返回值不符合预期的值,可以直接不执行后期的next了,例如多层校验。

感谢各位的阅读,以上就是“ES6的yield示例分析”的内容了,经过本文的学习后,相信大家对ES6的yield示例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联网站建设公司,,小编将为大家推送更多相关知识点的文章,欢迎关注!


文章名称:ES6的yield示例分析-创新互联
文章源于:http://azwzsj.com/article/coioei.html