//格式:function * fun(){} --异步编程、
// yield--作用相当于return,隔断函数中的整个代码块
//调用fun.next()
function * fun(arg){
console.log(arg)
//let变量保存yield返回值
let two=yield 1
console.log(two)//b
let three=yield 2
console.log(three)
//yield 3
}
let iterator=fun('a')
console.log(iterator.next())//第一次调用
//生成器参数的传递
console.log(iterator.next('b'))//.next()的参数会作为yield返回的整个结果保存
console.log(iterator.next('c'))
//3.生成器函数实例:
//需求:调用函数,每隔一秒分别输出1,2,3
//回调地狱:不停嵌套回调函数
// let one=setInterval(function (){
// console.log(1)
// let two=setInterval(function (){
// console.log(2)
// let three=setInterval(function (){
// console.log(3)
// clearInterval(three)
// },1000)
// clearInterval(two)
// },1000)
// clearInterval(one)
// },1000)
//生成器实现
function funone(){
let one=setInterval(function(){
console.log(1)
fun3.next()
clearInterval(one)
},1000)
}
function funtwo(){
let two=setInterval(function(){
console.log(2)
fun3.next()
clearInterval(two)
},1000)
//自动调用下一个生成器
}
function funthree(){
let three=setInterval(function(){
console.log(3)
clearInterval(three)
},1000)
}
function * fun2(){
yield funone()
yield funtwo()
yield funthree()
}
let fun3=fun2()
//启动generator
fun3.next()
es6,generator生成器自学笔记
最新推荐文章于 2024-07-18 10:24:18 发布