const pr = new Promise((resolve, reject) => {
});
const pr = new Promise((resolve, reject) => {
setTimeout(()=>{
resolve('OK')
}, 1000)
});
console.log("시작");
pr.then((result) => {
console.log(result);
})
.catch((err) => {
console.log(err);
})
.finally(() => {
console.log("END");
});

const pr = new Promise((resolve, reject) => {
setTimeout(()=>{
reject(new Error("err..."));
}, 1000)
});
console.log("시작");
pr.then((result) => {
console.log(result);
})
.catch((err) => {
console.log(err);
})
.finally(() => {
console.log("END");
});

const f1 = (callback) => {
setTimeout(function(){
console.log("1번 주문 완료");
callback();
}, 1000);
};
const f2 = (callback) => {
setTimeout(function(){
console.log("2번 주문 완료");
callback();
}, 3000);
};
const f3 = (callback) => {
setTimeout(function(){
console.log("3번 주문 완료");
callback();
}, 2000);
};
console.log("START");
f1(function(){
f2(function(){
f3(function(){
console.log("END");
});
});
}

const f1 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res('1번 주문 완료');
}, 1000);
});
};
const f2 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res('2번 주문 완료');
}, 3000);
});
};
const f3 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res('3번 주문 완료');
}, 2000);
});
};
console.log("START");
f1()
.then((res) => f2(res))
.then((res) => f3(res))
.then((res) => console.log(res))
.catch(console.log)
.finally(() => {
console.log('END');
});

const f1 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res('1번 주문 완료');
}, 1000);
});
};
const f2 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
rej('xxx');
}, 3000);
});
};
const f3 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res('3번 주문 완료');
}, 2000);
});
};
console.log("START");
f1()
.then((res) => f2(res))
.then((res) => f3(res))
.then((res) => console.log(res))
.catch(console.log)
.finally(() => {
console.log('END');
});

const f1 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res('1번 주문 완료');
}, 1000);
});
};
const f2 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res('2번 주문 완료');
}, 3000);
});
};
const f3 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res('3번 주문 완료');
}, 2000);
});
};
// Promise All
console.time('x')
Promise.all([f1(), f2(), f3()])
.then((res)=>{
console.log(res);
console.timeEnd('x');
});

const f1 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res('1번 주문 완료');
}, 1000);
});
};
const f2 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
rej('xxx');
}, 3000);
});
};
const f3 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res('3번 주문 완료');
}, 2000);
});
};
console.time('x')
Promise.all([f1(), f2(), f3()])
.then((res)=>{
console.log(res);
console.timeEnd('x');
});

const f1 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res('1번 주문 완료');
}, 1000);
});
};
const f2 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
rej('xxx');
}, 3000);
});
};
const f3 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res('3번 주문 완료');
}, 2000);
});
};
console.time('x');
Promise.race([f1(), f2(), f3()])
.then((res)=>{
console.log(res);
console.timeEnd('x');
});
