ES6中generator

代码1:

<script>
    //generator生成器函数,可以将一个函数分步进行
    function *show() {
        console.log("我是第一步");

        yield

        console.log("我是第二步");
    }

    let genObj = show()
    console.log(genObj);
    genObj.next()
    genObj.next()
    //generator其实质是将函数内部分为多个函数
</script>

  代码2:

<script>
    //yield是可以进行传参和返回

    //传参
    function *show1() {
        console.log("show11111第一部分执行完毕");

        let num = yield

        console.log("show11111第二部分执行完毕");
        console.log(num);
    }
    let genObj1 = show1()
    genObj1.next(666)
    genObj1.next(888)


    //赋值
    function *show2() {
        console.log("show22222第一部分执行完毕");

        yield "我是返回的数据"

        console.log("show22222第二部分执行完毕");
        return "I'm data"
    }

    console.log("--------------------------------------------------------------");


    let genObj2 = show2()
    console.log(genObj2.next());//{value: "我是返回的数据", done: false}
    console.log(genObj2.next());//{value: "I'm data", done: true}
    /**
     * {value: "我是返回的数据", done: false}
     * value是指返回的数据,done是指是否执行到最后
     * */
</script>

  

posted @ 2021-01-19 20:57  coderLsq  阅读(33)  评论(0)    收藏  举报