Generator函数自执行
Generator函数实现
function* gen(x){
    var y = yield x + 2;
    return y
}
//1.调用g函数会返回一个内部的指针
var g = gen(1);
//2.每次调用next会返回一个对象,{value,done}表示当前阶段的信息
g.next()//{value:3,done:false}
//3.如果第二次调用next方法,传入了参数则会作为上一阶段next的返回结果
g.next(2)//{value:2,done:true}
自动执行generator函数
let i = 0
function getNumber(){
    return new Promise((resolve,reject) => {
        setTimeout(() => {
            resolve(++i)
        },1000)
    })
}
function *read(){
    let a = yield getNumber();
    console.log(a)
    let b = yield 'b'
    console.log(b)
    let c = yield getNumber();
    console.log(c)
}
function co(gen){
    return new Promise((resolve, reject) => {
        let g = gen()
        function next(lastValue){
            let { value, done } = g.next(lastValue)
            if(done){
                resolve(lastValue)
            } else {
                if(value instanceof Promise){
                    value.then(next,err => reject(err))
                } else {
                     next(value)
                }
            }
        }
        next()
    })
}
co(read).then((data) => {
    console.log(data)
},(reason) => {
    console.log(reason)
})
												
											Generator函数自执行的更多相关文章
- ES6 - Note7:Generator函数
		
Generator函数 1.Generator函数是ES6增加的异步编程解决方案之一,与普通的函数行为完全不同,类似于一个状态机,内部封装了多个状态. 在函数定义的形式上,跟普通函数差不多,有两处不同 ...
 - Generator 函数的含义与用法
		
Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行). function* gen(x){ var y = yield x + 2; return y; } ...
 - ES6入门之Generator函数
		
Generator Generator函数是ES6提供的一种异步编程解决方案,Generator函数是一个状态机,封装了多个内部状态. 执行Generator函数会返回一个遍历器对象,也就是说,Gen ...
 - 转: ES6异步编程:Generator 函数的含义与用法
		
转: ES6异步编程:Generator 函数的含义与用法 异步编程对 JavaScript 语言太重要.JavaScript 只有一根线程,如果没有异步编程,根本没法用,非卡死不可. 以前,异步编程 ...
 - ECMAScript 6 入门  ----Generator 函数
		
本文转自:阮一峰老师的ECMAScript 6 入门,有时间可以看下评论! Generator 函数 简介 基本概念 Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不 ...
 - 一次搞懂 Generator 函数
		
1.什么是 Generator 函数 在Javascript中,一个函数一旦开始执行,就会运行到最后或遇到return时结束,运行期间不会有其它代码能够打断它,也不能从外部再传入值到函数体内 而Gen ...
 - ECMAScript 6 学习(一)generator函数
		
1.ES2017标准引入async函数,那么async函数到底是个什么函数呢? async 是一个generator函数的语法糖. 2.那么generator函数到底是什么函数ne? generato ...
 - JavaScript中的Generator函数
		
1. 简介 Generator函数时ES6提供的一种异步编程解决方案.Generator语法行为和普通函数完全不同,我们可以把Generator理解为一个包含了多个内部状态的状态机. 执行Genera ...
 - 16.Generator 函数的异步应用
		
Generator 函数的异步应用 Generator 函数的异步应用 异步编程对 JavaScript 语言太重要.Javascript 语言的执行环境是"单线程"的,如果没有异 ...
 
随机推荐
- [转] 打开 CMD 时自动执行命令
			
[转] 打开 CMD 时自动执行命令 问题描述 在Windows中打开一个command-prompt时,我正在寻找一种方法来执行一些控制台命令,特别是设置一些命令别名. 例如,当打开command- ...
 - 寻找第K大的数(快速排序的应用)
			
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数.给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在.测试样例:[1,3,5,2,2],5, ...
 - mysql常用日期、时间查询
			
好记性不如烂笔头 select curdate(); --获取当前日期 select last_day(curdate()); --获取本月最后一天. day); -- 获取本月第一天 ,interv ...
 - 解决织梦dedecms文档关键字(自动内链)php5.5以上失效的问题  urf-8版本的
			
找到include/arc.archives.class 在里面需要修改两次地方 在1230行 // 这里可能会有错误 if (version_compare(PHP_VERSION, '5.5.0' ...
 - Oracle数据库学习(二):Oracle Linux下oracle、ogg的挂载与参数配置
			
准备工作:打开虚拟机端的Oracle Linux Server 6.9的系统,然后使用root用户登录.打开终端界面,输入ifconfig -a查看IP地址. 然后在本地打开XShell软件使用以下命 ...
 - error occurred during initialization of vm
			
虚拟机无法进行如下分配 : -Xmx2048m -XX:MaxPermSize=512m 原因是我的老爷机总共内存只有3G: settings - > 搜索VM ->找到Compiler ...
 - JavaScript数据结构-19.拓扑排序
			
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
 - TCP网络参数优化
			
TCP连接的状态 TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用.特定数据包以及超时等,具体状态如下所示: CLOSED:初始状态,表示没有任何连接. LISTEN:Server端的某 ...
 - win7下安装centos6.5后,开机无法进入选择双系统启动界面,只能启动centos的解决办法
			
1.centos6.5下打开终端,进入/boot/grub ,vim grub.conf 将default=0 改为1,重启 2.重启后,又只能进入win7了.这个好解决.下载一个easyBCD,具体 ...
 - FocusBI:租房分析可视化(PowerBI网址体验)
			
微信公众号:FocusBI关注可了解更多的商业智能.数据仓库.数据库开发.爬虫知识及沪深股市数据推送.问题或建议,请关注公众号发送消息留言;如果你觉得FocusBI对你有帮助,欢迎转发朋友圈或在文章末 ...