js generate结合promise实现hello world

function* showHelloWorld() {
    let _s = '';
    _s += yield asyncFun(p1);
    _s += ' ';
    _s += yield asyncFun(p2);
    console.log(_s); //hello world
}

function asyncFun(cb_) {
    return new Promise(cb_)
}

function p1(cb_) {
    setTimeout(() => {
        cb_('hello');
    }, 1000);
}

function p2(cb_) {
    setTimeout(() => {
        cb_('world');
    }, 1000);
}

function forof(it_, data_) {
    const _obj = it_.next(data_);
    if (!_obj.done) {
        _obj.value.then(res_ => forof(it_, res_));
    }
}

forof(showHelloWorld());

该代码将在1s后将字符串改为hello

将在2s后将字符串改为hello world

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值