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