JS的ES6的Generator
时间:2019-12-17
本文章向大家介绍JS的ES6的Generator,主要包括JS的ES6的Generator使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
JS的ES6的Generator
1.Generator函数的概念:
-
ES6提供的解决异步编程的方案之一,现在已经不怎么用了被淘汰了。
-
Generator函数是一个状态机,内部封装了不同状态的数据。
-
用来生成遍历器对象
-
暂停函数,yield关键字暂停,next()方法启动,yield可以获得next方法传递过来的数据,如果无数据yield返回undefined,如果有数据则返回数据。
2.Generator使用:
1 function* generatorExample(){ 2 let result = yield 'hello'; // 状态值为hello 3 yield 'generator'; // 状态值为generator 4 }
-
function与函数名之间有一个星号
-
内部用yield表达式来定义不同的状态
-
generator函数返回的是指针对象(iterator),而不会执行函数内部逻辑
-
调用next方法函数内部逻辑开始执行,遇到yield表达式停止,返回{value: yield后的表达式结果/undefined, done: false/true}
-
再次调用next方法会从上一次停止时的yield处开始,直到最后
-
yield语句返回结果通常为undefined, 当调用next方法时传参内容会作为启动时yield语句的返回值。
3.示例:
1 var num = 1; 2 3 function AsyncUtil() { 4 setTimeout(() => { 5 console.log("异步任务" + num + "执行"); 6 7 let data = "异步任务" + num + "的返回数据xxxx"; 8 9 num++; 10 GU.next(data); //继续执行yield之后的语句 11 }, 2000); 12 } 13 14 function* generatorUtil() { 15 console.log("函数开始执行"); 16 17 let result = yield AsyncUtil(); //遇到yield就暂停,执行异步任务,让异步任务调用generatorUtil继续执行。 18 console.log("异步任务执行成功,返回值:" + result); 19 console.log("函数继续执行"); 20 21 result = yield AsyncUtil(); 22 console.log("异步任务执行成功,返回值:" + result); 23 24 console.log("函数执行结束"); 25 26 } 27 28 let GU = generatorUtil(); 29 console.log(GU); 30 31 GU.next(); //只有个使用next方法才能调用执行
原文地址:https://www.cnblogs.com/zhihaospace/p/12055585.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu 18.04 安装MySQL时未提示输入密码的问题及解决方法
- ubuntu中修改grub的启动时间生成
- linux7下虚拟主机的三种实现方式
- 详解CentOS7下PostgreSQL 11的安装和配置教程
- CentOS下安装Memcached和PHP Memcached扩展
- Mac中文件权限查看和设置详解
- linux下open-vswitch安装卸载操作
- CentOS7安装GUI界面及远程连接的实现
- Centos7.4环境安装lamp-php7.0教程
- iOS摄像头推流(2)
- ubuntu 16.04LTS 开机启动自动更换壁纸的实现方法
- linux中Centos7的LVM磁盘扩容问题
- 如何禁止网站内容被搜索引擎收录的几种方法讲解
- Apache由http自动跳转到https的多种方法
- CentOS服务器中安装FFmpeg的完整步骤