zoukankan      html  css  js  c++  java
  • Generator函数

    概念:
    1、ES6提供的解决异步编程的方案之一
    2、Generator函数是一个状态机,内部封装了不同状态的数据,
    3、用来生成遍历器对象
    4、可暂停函数(惰性求值), yield可暂停,next方法可启动。每次返回的是yield后的表达式结果
    特点:
    1、function 与函数名之间有一个星号
    2、内部用yield表达式来定义不同的状态

    function* generatorExample(){
    let result = yield 'hello'; // 状态值为hello
    yield 'generator'; // 状态值为generator
    }
    3、generator函数返回的是指针对象(接11章节里iterator),而不会执行函数内部逻辑
    4、调用next方法函数内部逻辑开始执行,遇到yield表达式停止,返回{value: yield后的表达式结果/undefined, done: false/true}
    5、再次调用next方法会从上一次停止时的yield处开始,直到最后
    6、yield语句返回结果通常为undefined, 当调用next方法时传参内容会作为启动时yield语句的返回值。

        function* generatorTest() {
          console.log('函数开始执行');
          yield 'hello';//输出hello暂定
          console.log('函数暂停后再次启动');
          yield 'generator';//输出generator
        }
        //生成遍历器对象
        let Gt=generatorTest();
       console.log(Gt);//遍历器对象
      let result=Gt.next();//函数执行,遇到yiedle暂停
        console.log(result)//{value: "hello", done: false}
        result = Gt.next();// // 函数再次启动
        console.log(result);// {value: 'generator', done: false}
        </script>
  • 相关阅读:
    406. 根据身高重建队列 vector 自定义排序
    5552. 到家的最少跳跃次数 BFS
    5602. 将 x 减到 0 的最小操作数 双指针
    Hadoop Container is running beyond memory limits code143
    1122. 数组的相对排序 自定义排序
    328. 奇偶链表 链表
    127. 单词接龙 bfs
    5600. 第 K 条最小指令 组合数学
    5548. 最小体力消耗路径 二分
    1024. 视频拼接 dp
  • 原文地址:https://www.cnblogs.com/hack-ing/p/12011886.html
Copyright © 2011-2022 走看看