首页 > 其他分享 >ES6生成器

ES6生成器

时间:2022-10-24 10:47:11浏览次数:52  
标签:ES6 console log iterator 生成器 yield next

//生成器就是一个特殊的函数
        function* gen(params) {
                console.log("111");
                yield '两只老虎';
                console.log("222");
                yield '跑得快';
                console.log("333");
                yield '真奇怪';
                console.log("444");
            }
            //执行获取迭代器对象,next方法会返回yieid后面的对象
        let iterator = gen();
        iterator.next();
        iterator.next();
        iterator.next();
        iterator.next();

  

  //生成器就是一个特殊的函数
        function* gen(arg) {
                console.log(arg);
                let one = yield '两只老虎';
                console.log(one);
                let two = yield '跑得快';
                console.log(two);
                let three = yield '真奇怪';
                console.log(three);
            }
            //执行获取迭代器对象,next方法会返回yieid后面的对象
        let iterator = gen('AAA');
        console.log(iterator.next());
        //next方法可传入实参
        console.log(iterator.next('BBB'));
        console.log(iterator.next("CCC"));
        console.log(iterator.next('DDD'));

//实例进行异步编程

 

首先 ,传统的js中存在异步调用回调地狱的现象,如果继续有异步任务,要不停的嵌套,如果需要读取很多数据 ,代码很那读懂

 

//异步编程回调地狱 由于js是单线程 如文件操作 网络操作 数据库操作 这些都要通过异步来完成
        //定时器案例演示
        //1s输出111,2s输出222.3s输出333
        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);
                iterator.next();
            }, 3000);
        }

        function* gen() {
            yield one();
            yield two();
            yield three();
        }

        //调用生成器函数
        let iterator = gen();
        //执行
        iterator.next();

 

标签:ES6,console,log,iterator,生成器,yield,next
From: https://www.cnblogs.com/xiaobaizitaibai/p/16820704.html

相关文章

  • php生成器Generator以及yield到底是什么?
    2022年10月14日08:23:35yield关键字生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yiel......
  • 中国制霸生成器「GitHub 热点速览 v.22.42」
    火遍推特的中国制霸生成器本周一开源就占据了两天的GitHubTrending榜,不知道你的足迹遍布了多少个省份呢?同样记录痕迹的kanal用了内存读写方式解决了Rust的消息处理......
  • Qt制作图表生成器
    ​ 基于Qt中的QCharts模块制作图表生成器软件该软件可制作多种图表​多样化主题设置​保存移植便捷快速​ 输入相关数据,自动生成对应图表饼图​柱状图​......
  • Es6,字符串新增的方法
    Es6,字符串新增的方法 String.fromCodePoint()ES5提供String.fromCharCode()方法,用于从Unicode码点返回对应字符,但是这个方法不能识别码点大于0xFFFF的字符。Stri......
  • Es6,对象新增的方法
    Es6,对象新增的方法  Object.is()  ES5比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等......
  • 3_ES6中拓展运算符的使用
    一,拓展运算符(...)拓展运算符(...):它会以参数序列的形式输出,更白话讲,比如数组,它可以把数组里面的东西一个一个的输出出来,例如1letarr1=["你","好","V","U","E",1,2]2......
  • JavaScript中的Generator生成器的基本用法
    ES6入门-阮一峰:Generator函数1.介绍Generator生成器是ES6提供的一种异步编程解决方案。是一个极为灵活的结构,拥有在函数块中暂停和恢复代码执行的能力。执行Gen......
  • Vue笔记3 计算属性 ES6语法、作用域闭包var/let/const、v-if/v-else/v-else-if 、v-sh
              闭包                    事件冒泡 阻止默认事件        key="username"......
  • ES6迭代器自定义遍历数据
    //声明一个对象constbanji={name:"一班",stus:["xiaobai","xiaohei",......
  • ES6简化对象写法
    name="xiaobai";chage=function(){console.log("我想改变");}constXiaobai={name,chage,......