generator

generator

function *generator(){
    var a = yield 1;
    console.log(a)  //100
    var b = yield 2;
    console.log(b) // undefined
    return 3
}
//第一次调用返回执行器
let gen = generator()

// next函数返回一个对象,value表示yeild后表达式的值,done表示函数执行状态
console.log('第一次调用',gen.next())
// yeild后表达式的返回值等于下一次调用next执行器传入的值
console.log('第二次调用',gen.next(100)) //{value:2,done:false}

console.log('第三次调用',gen.next()) //{value:3,done:true}
封装generator
function run(generator){
    let gen = generator()
    function next(data){
        //  调用next获取jenerator函数的执行状态
        let result=gen.next(data)
        //判断generator函数是否执行完
        if(result.done){
            return result.value
        }else{
            //判断yeild后面是否是promise 
            if(result.value.then){
                result.value.then(res=>next(res))
            }esle{
                next(result.value)
            }
        }
     
    }
       next()
}
console.log(run(generrator))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值