美文网首页
Generator函数学习笔记

Generator函数学习笔记

作者: 小编 | 来源:发表于2019-01-04 08:46 被阅读8次

    Generator 函数是 ES6 提供的一种异步编程解决方案。
    Generator 函数可以理解为是一个状态机,封装了多个内部状态。
    也可以理解为是遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。

    执行时机

    function* gen(){
        console.log('执行了')
    }
    gen();//cosole.log()并未执行
    

    与普通函数不同的是,直接调用gen函数,里面的代码并未执行。
    作为generator函数,需调用next方法才会执行,如下:

    function* gen(){
        console.log('执行了')
    }
    let g = gen();
    let next = g.next();
    
    console.log(g);//{}
    console.log(next);//{ value: undefined, done: true }
    

    暂停标记

    yield表达式是暂停执行的标记,而next方法可以恢复执行。
    注意:yield表达式是暂停标记,不是yield。【PS:以前我以为是后者,越看越懵】

    function* gen(){
        console.log('执行了')
        yield 'hello';
        console.log('hello之后执行');
        yield 'world';
    }
    let g = gen();
    let next = g.next();
    console.log(next)
    //执行了
    //{ value: 'hello', done: false }
    

    从上述代码看出,第二行代码执行了,console.log显示出value的值。显然执行了yield 'hello'这个表达式后,暂停执行。
    next方法返回一个对象,它的value属性就是当前yield表达式的值hellodone属性的值false,表示遍历还没有结束。

    相关文章

      网友评论

          本文标题:Generator函数学习笔记

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