代码:

function delay(time) {
    return new Promise(function (resolve, reject) {
        setTimeout(() => {
            resolve();
        }, time);
    });
}

function* output() {
    yield delay(500).then(() => console.log(1));
    yield (function () { console.log(2); return 'aa' })()
    yield delay(200).then(() => console.log(3));
    yield (function () { console.log(4); return 'aa' })()
}

function runGen(gen, next) {
    const item = gen.next();
    if (item.done) return;

    const { value } = item
    if (value instanceof Promise) {
        value.then(() => runGen(gen))
    } else {
        runGen(gen)
    }
}

runGen(output());
View Code

相关文章:

  • 2021-05-16
  • 2021-06-21
  • 2021-12-13
  • 2022-12-23
  • 2021-10-30
  • 2021-09-09
猜你喜欢
  • 2022-12-23
  • 2021-12-06
  • 2022-12-23
  • 2022-12-23
  • 2021-12-14
  • 2021-07-22
相关资源
相似解决方案