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)
})

最新文章

  1. CentOS上安装man手册
  2. SAP SMARTFORMS-基于内存方式在report程序中传递数据到smartforms显示
  3. Centos 6.4 python 2.6 升级到 2.7
  4. iOS开发——开发必备OC篇&UITableView设置界面完整封装(一)
  5. Ext.Net学习笔记03:Ext.Net MessageBus用法
  6. Coursera《machine learning》--(8)神经网络表述
  7. Java中Animal b = new Dog();Dog c = new Dog();的区别
  8. swiper 初始化的两个小坑
  9. python 命令
  10. BUAA_OO第一单元作业总结
  11. 课程回顾-Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
  12. Laravel 下生成验证码的类
  13. 〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)
  14. css-去掉IE浏览器自带×号
  15. day42-多线程与多进程
  16. padding(内边框), border(边框), margin, 标准文档流, 块级元素和行内元素, 浮动 ,margin的用法
  17. 获取和添加URL地址栏参数
  18. Saltstack之SaltSyndic
  19. Springboot 设置session超时
  20. 前端工程化 - bower

热门文章

  1. AngularJS源码解析4:Parse解析器的详解
  2. 如何无人值守安装linux系统(上)
  3. unittest测试框架和测试报告的输出实例(一)
  4. vscode 本地调试nodejs
  5. sparksql连接mysql
  6. UI1
  7. 使用Vue写一个登陆页面并在管理页面查看和修改
  8. Python2获取网页标题
  9. create-react-app安装出错问题解决
  10. MySQL3534