js中的Generators函数

Posted 叶家伟的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中的Generators函数相关的知识,希望对你有一定的参考价值。

js中的Generators函数

  1. generator一般操作

    generator函数的作用就是函数体分段执行,yield表示分隔点
    function *test() {
        console.log(1);
        yield 1;
        console.log(2);
        yield 2;
        console.log(3);
        yield 3;
    }
    
    var g = test();
    
    console.log(g.next())        // { value: 1, done: false }
    console.log(g.return(2))     // { value: 2, done: true },return不执行任何函数体,直接结束函数执行
    console.log(g.next())        // { value: undefined, done: true }
  2. 捕获异常

    function *test() {
        try {
            yield 1;
            yield 2;
        } catch (error) {
            console.log(error.message);
        }
    }
    
    var g = test();
    
    console.log(g.next())
    console.log(g.throw(new Error("Error")))  // { value: undefined, done: true } 捕获异常,同时结束函数执行
    console.log(g.next())
  3. 传递值给generator函数

    function *test() {
        var s;
        s = yield;
        console.log(s);
        s = yield;
        console.log(s);
    }
    
    var g = test();
    
    g.next();   // 第一次调用next会无视传递的value
    g.next(1);  // 第二次传递value现在才有用
  4. yield代理到其他的generator函数

    function *test() {
        yield 1;
        yield *other();
    }
    
    function *other() {
        yield 2;
        yield 3;
    }
    var g = test();
    
    console.log(g.next())  // 1
    console.log(g.next())  // 2
    console.log(g.next())  // 3
  5. 遍历generator函数

    function *test() {
        yield 1;
        yield 2;
        yield 3;
    }
    
    for(let item of test()) {
        console.log(item);
    }  // 1 2 3

以上是关于js中的Generators函数的主要内容,如果未能解决你的问题,请参考以下文章

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

JS常用代码片段-127个常用罗列-值得收藏

Chrome-Devtools代码片段中的多个JS库

Node.js JavaScript 片段中的跳过代码