function taskA() {
return new Promise((resolve) => {
setTimeout(() => {
console.log('Task A completed');
resolve('Result of A');
}, 1000);
});
}
function taskB(resultA) {
return new Promise((resolve) => {
setTimeout(() => {
console.log('Task B completed');
resolve(`Result of B with ${resultA}`);
}, 1000);
});
}
function taskD() {
return new Promise((resolve) => {
setTimeout(() => {
console.log('Task D completed');
resolve('Result of D');
}, 1000);
});
}
function taskC(resultB, resultD) {
return new Promise((resolve) => {
setTimeout(() => {
console.log('Task C completed');
resolve(`Result of C with ${resultB} and ${resultD}`);
}, 1000);
});
}
function taskF() {
return new Promise((resolve) => {
setTimeout(() => {
console.log('Task F completed');
resolve('Result of F');
}, 1000);
});
}
function taskE(resultC, resultF) {
return new Promise((resolve) => {
setTimeout(() => {
console.log('Task E completed');
resolve(`Result of E with ${resultC} and ${resultF}`);
}, 1000);
});
}
async function main() {
try {
const resultA = await taskA();
const resultB = await taskB(resultA);
const [resultD, resultF] = await Promise.all([taskD(), taskF()]);
const resultC = await taskC(resultB, resultD);
const resultE = await taskE(resultC, resultF);
console.log(resultE);
} catch (error) {
console.error('Error:', error);
}
}
main();