JS Generator yield
function show() {
console.log('a')
console.log('b')
}
show() // 普通函数
function *show2() {
console.log('1')
yield
console.log('2')
}
let genObj = show2() //返回的是指针对象
genObj.next() // 1
genObj.next() // 2
genObj.next()
需要调用next()方法启动执行,需要遇到 yield 停
generator函数前面加一个 * 两边可以有空格,或靠近函数或function
如果函数前漏掉 *
- 就是普通函数
- 如果有
yield会报错,ReferenceError: yield is not defined - yield 只能在Generator函数内部使用
yield
- 既可传参,又可以返回
- 第一个
next()传参无效,只用来启动
给yield穿参数
function * show() {
console.log('1')
var a = yield
console.log('2')
console.log(a)
}
var gen = show()
gen.next() // 1
gen.next() // 2 和 undefined
var gen = show()
gen.next(10) // 1
gen.next(20) // 2 和 20
如果要给第一个yield前的语句传参,可以把参数加在函数里,但是这个参数是整个生成器共享,即第二个yield也可以拿到
function * show(p) {
console.log('1')
console.log(p)
var a = yield
console.log('2')
console.log(a)
console.log(p)
}
var gen = show(10)
gen.next() // 1 和 10
gen.next(20) // 2 和 20 10
利用yield返回值
// yield 返回
function * show() {
console.log('1')
yield 10
console.log('2')
}
var gen = show()
var res1 = gen.next()
console.log(res1) // { value: 10, done: false }
var res2 = gen.next()
console.log(res2) // { value: undefined, done: true }
如果要给最后一个yield执行后返回值,可以利用return
function * show() {
console.log('1')
yield 10
console.log('2')
return 20
}
// yield 返回
var gen = show()
var res1 = gen.next()
console.log(res1) // { value: 10, done: false }
var res2 = gen.next()
console.log(res2) // { value: 20, done: true }
JS Generator yield的更多相关文章
- Generator & yield write in sync way
Generator & yield write in sync way var p = new Promise(function(resolve, reject){ setTimeout(fu ...
- Generator yield语法和 co模块
Generator yield 语法使用,也叫生成器,实际上就是多个异步按顺序执行 1.下面是一个读取两个文件的例子 const fs = require('fs'); const readFile ...
- 异步编程的上下文与操作符--await/async generator/yield
上下文的保存机制: 1.保存到异步类型中:promise & future & closure & observable: 2.栈帧保存:其它保存机制: 3.保存到服务提供方的 ...
- ES Next & Arrow function & Promise & Iterator & Generator yield & Async Await
ES Next & Arrow function & Promise & Iterator & Generator yield & Async Await co ...
- js generator和yield
function co<T>(fn: () => Generator<any, any, any>): Promise<T> { const g: Gener ...
- JS generator(生成器)
笔记整理自:廖雪峰老师的JS教程 目录 简介 与函数的不同之处 函数写法 generator写法 generator调用 generator对象的`next()`方法调用 `for ... of`循环 ...
- js generator数据类型
1. 概述 generator 是ES6引入的新的数据类型, 看上去像一个函数,除了使用return返回, yield可以返回多次. generator 由function* 定义, (注意*号), ...
- 生成器(generator,yield),next,send
#生成器 def generator(): for i in range(200): yield '哇哈哈%s' %i g = generator() #调用生成数函数,接受作用 ret = g.__ ...
- js generator
generator(生成器)是ES6标准引入的新的数据类型.一个generator看上去像一个函数,但可以返回多次. generator跟函数很像,定义如下: function* foo(x) { y ...
随机推荐
- 操作系统(五)CPU调度
CPU调度是多道程序操作系统的基础.
- HDFS中NameNode管理元数据机制
NameNode职责 响应客户端请求 维护目录树 管理元数据(查询,修改) HDFS元数据存储 内存中有一份完整的元数据(特定数据结构) 磁盘有一个“准完整”的元数据的镜像文件 当客户端对HDFS中的 ...
- Java常见数据结构
HashMap深入浅出 HashMap数据结构 HashMap的本质就是一个数组加链表,数组默认长度是16,存储的元素达到总长度的75%就会扩容一倍.map.put(key,val),实际上就是根据h ...
- JVM - Java虚拟机规范官方文档
Java虚拟机规范官方文档
- 三、redis学习(jedis连接池)
一.jedis连接池 二.jedis连接池+config配置文件 三.jedis连接池+config配置文件+util工具类 util类 public class JedisPoolUtils { / ...
- ASP.NET Core WebAPI帮助页--Swagger简单使用1.0
1.什么是Swagger? Swagger是一个规范且完整的框架,提供描述.生产.消费和可视化RESTful API,它是为了解决Web API生成有用文档和帮助页的问题. 2.为啥选用swagg ...
- iptables 设置特定IP访问指定端口
一.添加规则:设置禁止所有IP访问指定端口8075 [root@zabbix_server ~]# iptables -I INPUT -p tcp --dport -j DROP 二.测试telne ...
- oracle exp 和 imp 数据和表结构互相独立导出导入
1)只导入数据.不到导入表结构 不可能只导出数据而不导出表结构 这里做了一个变向处理可以在imp时使用ignore=Y选项就可以了,而不报错. 这样就可以实现把数据导入到原来的表里: imp user ...
- CI/CD----jenkins安装配置
1.下载jenkins rpm包. https://pkg.jenkins.io/redhat/ 2.安装 rpm -ivh jenkins-2.182-1.1.noarch systemctl st ...
- java 学习笔记(五) Zookeeper的集群配置和Java测试程序
参考博客 http://blog.csdn.net/catoop/article/details/50848555 http://blog.csdn.net/randompeople/article/ ...