ES6 Generator的基本使用

 //Generator函数是ES6提供的一种异步编程解决方案
        //语法行为和传统异步编程完全不同

        //形式上和普通函数类似。有两个特征
        //1、function关键字后面有个星号
        //2、函数体内使用yield表示,定义不同的内部状态

        //Generator函数就是一个状态机,在内部封装了多个状态
        function* myGenerator() {
            console.log("step1.....")
            yield "hello";
            console.log("step2.....")
            yield "world"
            console.log("step3.....")
            return "ending"
        }
        //调用Generator后,函数并不立即执行,
        //返回一个指向内部的指针对象,其实就是一个遍历器对象(Iterator)
        let mygenerator = myGenerator()
        //console.log(mygenerator)


        //调用遍历器对象的next方法,让指针移向下一个状态
        //也就是说内部指针从函数头部或者上一次停下来的地方开始执行
        //直到遇到下一个yield表达式或者return语句为止。

        //{value: "hello", done: false}
        console.log(mygenerator.next())
        //{value: "world", done: false}
        console.log(mygenerator.next())
        //{value: "ending", done: true}
        console.log(mygenerator.next())

        //console.log(mygenerator.next())
posted @ 2021-02-26 11:34  abcdefgab  阅读(71)  评论(0)    收藏  举报