可以看做一个状态机, 生成的是一个迭代器对象, 可以用来遍历状态机里面的各种状态

创建方式

  在函数名前面添加 * , 内部使用 yeild 来标注状态

特性

  yield 只能在 generator 中, 必须是在直接中, 不能是在间接中 

可以被 for of 直接遍历

  扩展运算符, 结构赋值, Array.from 内部都是调用的迭代器, 因此都可以使用 generator

  实例继承generator原型上的函数

  实例拿不到generator上的 this

  不能和 new 一起使用

  两个 yield 之间并不会判断异步是否完成, 而是直接执行, 需要自己判断,然后根据返回值来决定是否执行下一步

 

使用

  用来写迭代器函数, 比较方便, 有点类似语法糖

  next 可以作为 yeild 表达式的返回值, (注意不是 next 的返回值) 这样就可以在执行过程中改变 generator 的状态

  可以作为一种协成的实现, 多个函数当做多个线程

  异步操作的同步化表达 (yield 可以分开回调函数和异步操作)

  可以作为一种数据结构, 直接在其中返回不同的函数

  

实例方法

  next

  throw,  抛出错误, 在函数内铺货

  return 终结函数

  

  

generator 函数的更多相关文章

  1. ES6 - Note7:Generator函数

    Generator函数 1.Generator函数是ES6增加的异步编程解决方案之一,与普通的函数行为完全不同,类似于一个状态机,内部封装了多个状态. 在函数定义的形式上,跟普通函数差不多,有两处不同 ...

  2. Generator 函数学习笔记

    // 使用 function* 定义一个 generator 函数 function* helloWorldGenerator() { yield 'hello'; // yield 关键字作为暂停的 ...

  3. Generator 函数的含义与用法

    Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行). function* gen(x){ var y = yield x + 2; return y; } ...

  4. generator函数

    function* helloWordGenerator() { yield "hello"; yield "world"; return "endi ...

  5. ES6入门之Generator函数

    Generator Generator函数是ES6提供的一种异步编程解决方案,Generator函数是一个状态机,封装了多个内部状态. 执行Generator函数会返回一个遍历器对象,也就是说,Gen ...

  6. 转: ES6异步编程:Generator 函数的含义与用法

    转: ES6异步编程:Generator 函数的含义与用法 异步编程对 JavaScript 语言太重要.JavaScript 只有一根线程,如果没有异步编程,根本没法用,非卡死不可. 以前,异步编程 ...

  7. Generator函数语法解析

    转载请注明出处: Generator函数语法解析 Generator函数是ES6提供的一种异步编程解决方案,语法与传统函数完全不同.以下会介绍一下Generator函数. 写下这篇文章的目的其实很简单 ...

  8. Generator函数异步应用

    转载请注明出处: Generator函数异步应用 上一篇文章详细的介绍了Generator函数的语法,这篇文章来说一下如何使用Generator函数来实现异步编程. 或许用Generator函数来实现 ...

  9. ES6的generator函数

    generator是什么? generator是ES6提供的一种异步编程解决方案,在语法上,可以把它理解为一个状态机,内部封装了多种状态.执行generator,会生成返回一个遍历器对象.返回的遍历器 ...

  10. ECMAScript 6 入门 ----Generator 函数

    本文转自:阮一峰老师的ECMAScript 6 入门,有时间可以看下评论! Generator 函数 简介 基本概念 Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不 ...

随机推荐

  1. JavaScript事件流--事件冒泡、目标与事件捕获

    1.事件冒泡 微软提出了名为事件冒泡的事件流.事件冒泡可以形象地比喻为把一颗石头投入水中,泡泡会一直从水底冒出水面.也就是说,事件会从最内层的元素开始发生,一直向上传播,直到document对象. 因 ...

  2. 四层协议和Socket编程

    <四层协议图> <Soclet编程模型图>

  3. SASS和LESS等优缺点对比,使用方法总结 (笔记大全)

    sass优点: 用户多,更容易找到会用scss的开发,更容易找到scss的学习资源: 可编程能力比较强,支持函数,列表,对象,判断,循环等: 相比less有更多的功能: Bootstrap/Found ...

  4. VC++ 崩溃处理以及打印调用堆栈

    title: VC++ 崩溃处理以及打印调用堆栈 tags: [VC++, 结构化异常处理, 崩溃日志记录] date: 2018-08-28 20:59:54 categories: windows ...

  5. 修改vue的配置项支持生产环境下二级目录访问的方法

    本文主要记录如何配置vue的打包文件配置项,使打包后的文件可以支持二级目录的访问. 1.常规打包 在实际的项目中,我们通常都使用 npm run build 直接打包文件后丢到服务器上访问 打包后的文 ...

  6. kotlin语法

    https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt /** * ...

  7. Sort函数的用法

    快速排序sort的用法:(适用于int float double char ...) 记得加头文件! 记得加头文件! 记得加头文件! 头文件: #include <algorithm>   ...

  8. 考勤机sql语句

    考勤机sql语句 SELECT checkinout.id as 序号 ,checkinout.pin as 打卡编号,userinfo.name 姓名, checkinout.checktime 签 ...

  9. Javascript之深入理解闭包

    闭包算是js里面比较不容易理解的点,尤其是对于没有编程基础的人来说. 其实闭包要注意的就那么几条,如果你都明白了那么征服它并不是什么难事儿.下面就让我们来谈一谈闭包的一些基本原理. 闭包的概念 一个闭 ...

  10. react-native-mapbox-gl

    mapbox是基于谷歌地图集成的地图插件,可以在很多平台使用,具体可以看mapbox官网.这里具体讲解“react-native-mapbox-gl”插件,是mapbox结合react native封 ...