es6,generator生成器自学笔记

//格式: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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值