0
点赞
收藏
分享

微信扫一扫

前端es6

爪哇驿站 2022-01-31 阅读 81

es6

es6生成器函数实例_异步编程

  • yield关键字,使生成器函数执行暂停
  • function*生成器函数语法
  • iterator.next()迭代器类的方法,获取当前元素,并指向下一个元素
  • let声明变量,块级作用域
  • setTimeout指定的毫秒数后调用函数
        // 回调地狱
        setTimeout(() => {
            console.log(111);
            setTimeout(() => {
                console.log(222);
                setTimeout(() => {
                    console.log(333);
                }, 3000);
            }, 2000);
        }, 1000);


        //异步回调
        function one() {
            setTimeout(() => {
                console.log(111);
                iterator.next();
            }, 1000);
        }
        function two() {
            setTimeout(() => {
                console.log(222);
                iterator.next();
            }, 2000);
        }
        function three() {
            setTimeout(() => {
                console.log(333);
            }, 3000);
        }
        //生成器函数
        function * gen(){
            yield one();
            yield two();
            yield three();
        }
        // 调用生成器函数
        let iterator=gen();
        iterator.next();


  // 模拟获取 用户数据 订单数据 商品数据
        function getUsers(){
            setTimeout(() => {
                let data='用户数据';
                // 调用next方法,并且将数据传入
                iterator.next(data);
            }, 1000);
        }
        function getOrders(){
            setTimeout(() => {
                let data='订单数据';
                iterator.next(data);
            }, 1000);
        }
        function getGoods(){
            setTimeout(() => {
                let data='商品数据';
                iterator.next(data);
            }, 1000);
        }
        //生成器函数
        function * gen(){
            let users=yield getUsers();
            console.log(users);
            let orders=yield getOrders();
            console.log(orders);
            let goods=yield getGoods();
            console.log(goods);
        }
        // 调用生成器函数
        let iterator=gen();
        iterator.next();        
举报

相关推荐

0 条评论