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);
}
const gen = asyncTasks();
gen.next().value.then(r1 => {
gen.next(r1).value.then(r2 => {
gen.next(r2).value.then(r3 => {
console.log(r3)
})
})
})