美文网首页
利用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