编辑代码

/**
 *
 *
 *
 *
 */

function* asyncTasks() {
    const result1 = yield new Promise((resolve) => {
        setTimeout(() => resolve('Task 1 finished'), 300);
    });
    console.log(result1)

    const result2 = yield new Promise((resolve) => {
        setTimeout(() => resolve('Task 2 finished'), 1500);
    });
    console.log(result2)

    const result3 = yield new Promise((resolve) => {
        setTimeout(() => resolve('Task 3 finished'), 200);
    });
    console.log(result3)

    return 'All tasks finished';
}


function runAsyncTasks() {
    const gen = asyncTasks();
    const result = gen.next();

    function step(nextResult) {
        if (nextResult.done) {
            console.log(nextResult.value, '123- 11');
            return;
        }

        nextResult.value.then(
            (result) => {
                step(gen.next(result));
            },
            (error) => {
                step(gen.throw(error));
            }
        );
    }

    step(result);
}

// runAsyncTasks();

const gen = asyncTasks();
// let result = gen.next();

gen.next().value.then(r1 => {
    gen.next(r1).value.then(r2 => {
        gen.next(r2).value.then(r3 => {
            console.log(r3)
        })
    })
})

// console.log(gen.next())
// console.log(gen.next())
// console.log(gen.next())
// console.log(gen.next())
// console.log(gen.next())
// console.log(gen.next())
// console.log(gen.next())
// console.log(gen.next())