ES6-Generator基础用法
Generator简介:
生成器,本身是函数,执行后返回迭代对象,函数内部要配合yield使用Generator函数会分段执行,遇到yield暂停。
使用Generator注意点:function 和函数名之间需要带 *
function* text(){ }
Generator的yield注意点:yield是ES6新关键字,作用是使Generator(生成器)函数暂停。
function* text(){
yield 'a';
yield 'b';
yield 'c';
return 'd';
}
let iterationObj = text(); console.log(iterationObj.next());//{value: "a", done: false}
console.log(iterationObj.next());//{value: "b", done: false}
console.log(iterationObj.next());//{value: "c", done: false}
console.log(iterationObj.next());//{value: "d", done: true} yield后,必须return最后一个值,如果不return最后一个值value为undefined。 当每次执行后返回{value, done}value值是当次执行yield里面的值,done值是当次执行看看代码执行到第几行,如果到最后一行返回true,其他返回false
那么我们如何证明当遇到yield函数暂停。
function* text(){
yield 'a';
console.log('1');
yield 'b';
console.log('2');
yield 'c';
console.log('3');
return 'd'
} let iterationObj = text();
console.log(iterationObj.next());//因为第一行是yield碰到暂停输出:{value: "a", done: false}
console.log(iterationObj.next());//执行第二行输出:1 然后碰到yield暂停输出:{value: "b", done: false}
当yield被变量接收,下一次执行参数就是上一个变量的值。
function* text(){
let value = yield 'a';
console.log(value);
let value1 = yield 'b';
console.log(value1);
let value2 = yield 'c';
console.log(value2);
return 'd'
} let iterationObj = text();
console.log(iterationObj.next());//{value: "a", done: false} 因为第一个是执行yield所以直接暂停不输出第二行的console.log
console.log(iterationObj.next('22'));
那么打印结果就是{value: "a", done: false}
22
{value: "b", done: false}
ES6-Generator基础用法的更多相关文章
- ES6 generator 基础
参考文档 harmony:generators Generator是ES6的新特性,通过yield关键字,可以让函数的执行流挂起,那么便为改变执行流程提供了可能. 创建Generator functi ...
- es6 generator 基础知识
1.定义和使用 function *gen() { return 'first generator'; } // 有点类似类的实例化过程 let generatorResult = gen() // ...
- asyncio 基础用法
asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...
- PropertyGrid控件由浅入深(二):基础用法
目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...
- logstash安装与基础用法
若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...
- elasticsearch安装与基础用法
来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...
- BigDecimal最基础用法
BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...
- Vue组件基础用法
前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...
- Smarty基础用法
一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...
- 前端自动化测试神器-Katalon的基础用法
前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...
随机推荐
- IScroll自动计算高度代码
setScrollHeight: function () { var temp_height = 0; temp_height = $("#" + this.wrapperId). ...
- 获取豆瓣电影数据(R与API获取网页数据)
一般成熟的网站都会有反爬虫策略,例如限制访问次数,限制访问 IP,动态显示数据等.爬虫和反爬虫就是一直相爱相杀地互相钳制.如果要通过爬虫来获取某些大型网站的数据,那是一件很费时费力的活.小白总遭遇过在 ...
- 【leetcode-198】打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定一个代表每 ...
- navicat for mongodb12破解
网上搜了一圈,都不管用.大多都有病毒,最后还是通过搜索github解决问题. 破解文件:https://github.com/DoubleLabyrinth/navicat-keygen/releas ...
- JavaScaript学习笔记第(一)
js由三部分组成,分别是ECMAScript.DOM.BOM 其中ECMAScript规定了js的语法 js是一门解释型语言.脚本语言.动态类型语言.基于对象语言 书写js代码和CSS一样,有三个书写 ...
- .net 调用 Python脚本中的代码
使用工具:IronPython 工具介绍:是一种在 .NET 及 Mono上的 Python 实现,是一个开源的项目,基于微软的 DLR 引擎.(个人理解就是在 .net上面运行Python代码) 使 ...
- 【C#进阶学习】泛型
一.泛型引入 需求:传入一个类型(整型/日期/字符串或其他),打印出它的类型和内容. 1.初级版 public class CommonMethod { /// <summary> /// ...
- Linux命令2
http://note.youdao.com/noteshare?id=172b36da28e63a528f2cb70fb7d9ea96 http://note.youdao.com/noteshar ...
- 安装Docker报container-selinux >= 2.9错
Docker装了无数次,还是会遇到如此熟悉的问题,知道他是版本需要更新,但是就是找不到对应的,在网上找了差不多一个下午都没弄好.发现平时还是要多动脑子才行,既然知道是版本需要更新,那么到官网直接找版本 ...
- github操作
Github使用 1. 注册 官网:https://github.com/ 搜索项目 以压缩包的的形式下载demo 克隆项目 创建仓库 克隆项目,编写,完成上传,使用https请求,需要输入用户名 ...