generator生成器

generator生成器

函数末尾如果没有return,就是隐含的return undefined;

        let fbnq = (max)=>{  // 手写斐波那契数列
            let a = 0 ;
            let b = 1;
            let c;
            let arr = [0,1]
            while(arr.length<max){
                c = a +b;
                a = b;
                b = c ;
                // [a,b] = [b,a+b]  // 解构赋值
                arr.push(c)
            }
            return arr;
        }

        let fbnq2 = function* (max){ // 手写斐波那契数列
            let a = 0 ;
            let b = 1;
            let c;
            let arr = []
            while(arr.length<max){
                yield a
                arr.push(a)
                c = a +b;
                a = b;
                b = c ;
                // [a,b] = [b,a+b]  // 解构赋值
                
            }
            return arr;
        }
        console.log(fbnq(10))
        for(let val of fbnq2(5)){
            console.log(val)
        }
        console.log(fbnq2(5).next())

在前端开发过程中我们经常需要先请求后端的数据,再用拿来的数据进行使用网页页面渲染等操作,然而请求数据是一个异步操作,而我们的页面渲染又是同步操作,这里ES6中的generator就能发挥它的作用,使用它可以像写同步代码一样写异步代码。下面是一个例子,先忽略下面的写法,后面会详细说明。如果你已经理解generator基础可以直接跳过这部分和语法部分,直接看深入理解的部分。

function *foo() {
  // 请求数据
  var data = yield makeAjax('http://www.example.com');
  render(data);
}

觉得有帮助,点个赞吧!

猜你喜欢

转载自blog.csdn.net/qq_37339364/article/details/82769673