node.js - generator中yield *next 与 yield next的区别是什么?
怪我咯
怪我咯 2017-04-17 11:14:24
[Node.js讨论组]

yield *next 与 yield next的区别是什么?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
高洛峰

yield* 是委托提取器,详情看这里:http://wiki.ecmascript.org/doku.php?id=harmony:generators#delegating_yield。简单地说,yield 是你给什么它提取什么,但是 yield* 会继续向下请求,直到没的提取为止。

举个例子好了:

function* a() { yield 1; yield 2; yield 3; }
function* b() { yield 4; yield* a(); yield 5; }
function* c() { yield 6; yield* b(); yield 7; }

for (let x of c()) console.log(x)    // 你觉得会输出什么?先自己试试看

答案是:6, 4, 1, 2, 3, 5, 7,这个逻辑还算挺好理解吧?

大家讲道理

其实可以简单的理解为:yield next是让generator返回next,而yield *next里的next本身是一个generator,外层generator返回这个next generator的返回值

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号