ES6 Generator的next方法参数

        function* f() {
            for (let i = 0; true; i++) {
                //yield表达式本身是没有返回值,或者说是返回undefined
                let reset = yield i

                console.log("reset", reset)
                if (reset) { i = -1 }
            }
        }

        var g = f()

        console.log(g.next())
        console.log(g.next())
        //next方法可以带一个参数,改参数就会被作为上一个yield表达式的返回值
        console.log(g.next(true))

        console.log("-------------------")
        function* foo(x) {
            var y = 2 * (yield (x + 1))
            var z = yield (y / 3)
            return (x + y + z)
        }

        var a=foo(5)
        console.log(a.next())
        console.log(a.next())
        console.log(a.next())

        console.log("-------------------")
        var b=foo(5)
        console.log(b.next())
        console.log(b.next(12))
        console.log(b.next(13))
posted @ 2021-02-26 22:08  abcdefgab  阅读(174)  评论(0)    收藏  举报