美文网首页
利用generator生成迭代器

利用generator生成迭代器

作者: yschen | 来源:发表于2019-05-26 08:56 被阅读0次

一.作用及内部原理

generator(生成器)用来创建迭代器,语法非常简洁(function* + yield)

生成器执行yield语句时,生成器的堆栈结构(本地变量、参数、临时值、生成器内部当前的执行位置)被移出堆栈。但生成器对象保留了对这个堆栈结构的引用(备份),所以稍后调用.next()可以重新激活堆栈结构并且继续执行

例如:

// 定义生成器

var gen = function*() {

    console.log('before yield 1');

    yield 1;

    console.log('before yield 2');

    yield 2;

}

// 调用生成器返回迭代器

var iter = gen();

iter.next();    // before yield 1

                // Object {value: 1, done: false}

iter.next();    // before yield 2

                // Object {value: 2, done: false}

iter.next();    // Object {value: undefined, done: true}

iter.next();    // Object {value: undefined, done: true}

yield语句把函数体分割成了几段,

相关文章

网友评论

      本文标题:利用generator生成迭代器

      本文链接:https://www.haomeiwen.com/subject/bifxtctx.html