码迷,mamicode.com
首页 > Web开发 > 详细

js中的Generators函数

时间:2019-02-03 20:59:27      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:new   error   调用   undefined   class   tor   OLE   二次   遍历   

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函数

标签:new   error   调用   undefined   class   tor   OLE   二次   遍历   

原文地址:https://www.cnblogs.com/ye-hcj/p/10350984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!