generator函数(生成器函数)

1.生成器函数的返回值是一个iterator遍历器对象,调用对象上的next()方法,得到的是一个对象,对象中的value值就是yield后的值。

2.next()方法可以接受一个参数,它的参数会作为上一个yield的返回值。

3.如果有嵌套的next(),先执行里边的。

4.生成器函数中调用生成器函数用 yield*

举例:1.

 //声明一个Hello的Generator函数
    function* Hello() {
     let res = yield `hello`;
        yield res;
    }
    
    let iterator = Hello();
    //结果:一个生成器对象

    console.log(iterator.next());
    //结果:{value: "hello", done: false}

    console.log(iterator.next("这里的内容替换yield `hello`"));
    //结果:{value: "这里的内容替换yield `hello`", done: false}
    console.log(iterator.next());
    //结果:{value:“undefined”,done:true}

2.

//声明Generator函数:gen1   
    function* gen1() {
        yield "gen1 start";
        yield "gen1 end";
    }
//声明Generator函数:gen2
    function* gen2() {
        yield "gen2 start";
        yield "gen2 end";
    }

    //声明Generator函数:start
    function* start() {
        yield "start";
        yield* gen1();
        yield* gen2();
        yield "end";
    }

    //调用start函数
    var ite = start();
    //创建一个生成器
    
    console.log(ite.next());
    //{value: "start", done: false}

    console.log(ite.next());
    //{value: "gen1 start", done: false}

    console.log(ite.next());
    //{value: "gen1 end", done: false}

    console.log(ite.next());
    //{value: "gen2 start", done: false}

    console.log(ite.next());
    //{value: "gen2 end", done: false}

    console.log(ite.next());
    //{value: "end", done: false}    
    console.log(ite.next());
    //{value: "undefined", done: true}    

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值