JavaScript生成器函数(generator function)
JavaScript生成器函数(generator function)
- 注意:数组推导式和生成器推导式建议都不要使用。都是非标准语法。
- 可以使用生成器函数(generator function)
- 语法:
function* 函数名(参数){函数体}
- 生成器函数在执行时能暂停,后面又能从暂停出继续执行。
- 使用yield关键字可以暂停函数
- 调用一个生成器函数,会得到生成器的迭代器对象。
- 使用next()方法。被首次(后续)调用时,其内的语句会执行到第一个(后续)出现yield的位置为止,yield 后紧跟迭代器要返回的值。
- yield*(多了个星号),则表示将执行权移交给另一个生成器函数(当前生成器暂停执行)。
- next()-> {value:value1,done:true|false}
- value:表示本次返回的值,即yield表达式返回的值
- done:表示生成器后续是否还有
yield
语句,即生成器函数是否已经执行完毕并返回。
- 注意:next()方法时,如果传入了参数,那么这个参数会作为上一条直线的yield语句的返回值
function * gen(){yield 10;y = yield 'foo';yield y;
}var gen_obj = gen();
console.log(gen_obj.next()); // 10
console.log(gen_obj.next());
console.log(gen_obj.next(11));
console.log(gen_obj.next());
示例:计数器生成器版本
const num = function*(n=0){while (true){if(n>=11) return n;yield ++n;} }()console.log(num.next()) for(let i of num){console.log(i) }
yield*的示例
function* anotherGenerator(i) {yield i + 1;yield i + 2;yield i + 3;
}function* generator(i){yield i;yield* anotherGenerator(i);// 移交执行权yield i + 10;
}var gen = generator(10);console.log(gen.next().value); // 10
console.log(gen.next().value); // 11
console.log(gen.next().value); // 12
console.log(gen.next().value); // 13
console.log(gen.next().value); // 20
JavaScript生成器函数(generator function)相关推荐
- javascript 生成器函数 function*
今天看了一下这块的东西,文档不是很好理解.但是完完整整看下来,文档还是很全的. 这里算是总结一下在看生涩的文档之前可以了解的东西,方便看文档的时候好理解. 1,什么是生成器函数(function*) ...
- JavaScript 生成器函数
JavaScript 生成器函数是一种特殊的函数,它可以返回一个迭代器.使用生成器函数,可以在函数执行期间暂停并返回一个值,并在之后继续执行函数. 使用生成器函数时,需要在函数名前面加上一个星号 (* ...
- ES6生成器函数generator
ES6生成器函数generator generator是ES6新增的一个特殊函数,通过 function* 声明,函数体内通过 yield 来指明函数的暂停点,该函数返回一个迭代器,并且函数执行到 y ...
- JavaScript的函数(function)
目录 函数的基本概念 概念: 理解: 优点: 函数的基本语法 声明式: 赋值式: 调用: 函数的参数 一个参数时 多个参数时 函数的返回值 函数的返回值return 简单的理解return 为什么要有 ...
- python生成器函数(generator),python3学习笔记:生成器generator
简单了解下生成器generator,主要是yield的返回值和send的传参,记录下. 生成器的基本属性 generator = 函数 + yield 简单说,就是一个函数,里面用到了关键字yield ...
- JavaScript 箭头函数与function函数区别
结合以下注释理解代码,有空再分步骤讲解 // 执行正常 function 方法名() 会直接将函数提升到顶部所以此步成功 normalFun(2); // 执行失败 因var会将arrowFun变量提 ...
- [译] 什么是 JavaScript 生成器?如何使用生成器?
原文地址:What are JavaScript Generators and how to use them 原文作者:Vladislav Stepanov 译文出自:掘金翻译计划 本文永久链接:g ...
- 细说JavaScript异步函数发展历程
2019独角兽企业重金招聘Python工程师标准>>> < The Evolution of Asynchronous JavaScript >外文梳理了JavaScri ...
- 石川es6课程---13-16、generator-认识生成器函数
石川es6课程---13-16.generator-认识生成器函数 一.总结 一句话总结: ` generator函数,中间可以停,到哪停呢,用 yield 配合,交出执行权 ` 需要调用next() ...
最新文章
- linux 删除含有关键词的文件_误删除Linux系统文件了?这个方法教你解决
- 【c语言】求最大最小值
- Javascript JQuery获取当前元素的兄弟元素/上一个/下一个元素(转)
- FPGA之道(46)数字电路中的隐患
- Rust基础笔记:Getting input from the console
- Java实现算法导论中快速傅里叶变换FFT迭代算法
- 【thinkPHP框架】Failed opening required 'header.php' include_path='.;c:\php5\pear 终级解决方案...
- spark 笔记 16: BlockManager
- arduino 停止程序_建立Arduino机器人,第五部分:障碍规避
- 我的Go+语言初体验——(6)整型有理数数据类型
- Vs code 02 配置非标准的C、C++的编译环境
- HttpClient-Java-发送HTTP请求
- mongodb插入数据_MongoDB插入
- VC++中OpenGL的配置
- Lorenz系统的吸引子相图
- Censored! POJ - 1625
- 微信支付不靠谱 星巴克喝一杯咖啡被刷掉一千多
- 天才小毒妃 第914章 无论如何要带她走
- LINUX内核内存屏障
- 网络工程师面试题(面试必看)(4)