爱凉拌菜真是太好了


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索
爱凉拌菜真是太好了

'Generator 执行顺序'

发表于 2016-12-26

generator 不同于普通的函数,执行方式有区别

1
2
3
4
5
6
7
8
function* foo() {
yield 1;
console.log(yield);
}
let fooObj = foo();
console.log(fooObj.next());
console.log(fooObj.next());
console.log(fooObj.next());

第一个fooObj.next() 返回Object {value: 1, done: false}
此时fooObj指针指向的是yield 1(第一个yield)

第二次运行fooObj.next(), 指针指向console.log(yield)中的yield
即第二个yeild,此时函数返回Object {value: undefined, done: false}

第三次运行fooObj.next(), 指针继续向后移动,开始执行console.log(yield)
语句,由于next参数为undefined,则指定上一次(即第二次yeild)yeild为undefined
所以打印出undefined 和 Object {value: undefined, done: true}

1…56
Johnny Lin

Johnny Lin

爱凉拌菜真是太好了的博客

26 日志
13 标签
© 2017 Johnny Lin
由 Hexo 强力驱动
主题 - NexT.Muse