반응형
Thread는 가장 작은 작업 단위
자바스크립트 Single Thread: 한 순간에 단 하나의 작업만 실행한다.
1. Async theory
/**
* Async theory
*/
// function longWork() {
// const now = new Date();
// /**
// * milliseconds since epoch
// * 1970년도 1월 1일부터 지금 코드가 실행되는 순간까지의 시간을
// * 밀리초로 반환한다.
// */
// const milliseconds = now.getTime();
// const afterTwoSeconds = milliseconds + 2 * 1000;
// while(new Date().getTime() < afterTwoSeconds){
// }
// console.log('완료');
// }
// console.log('Hello');
// longWork();
// console.log('World');
function longWork(){
setTimeout(()=>{
console.log('완료');
}, 2000);
}
console.log('Hello');
longWork();
console.log('World');
// Hello
// Hello
// 완료
2. Callback
/**
* Callback
*/
function waitAndRun() {
setTimeout(() => {
console.log('끝');
}, 2000);
}
// waitAndRun();
function waitAndRun2() {
setTimeout(
() => {
console.log('1번 콜백 끝');
setTimeout(() => {
console.log('2번 콜백 끝');
setTimeout(() => {
console.log('3번 콜백 끝');
}, 2000);
}, 2000);
}, 2000);
}
// waitAndRun2();
//끝
//1번 콜백 끝
//2번 콜백 끝
//3번 콜백 끝
/**
* Promise
*/
const timeoutPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('완료');
}, 2000);
});
// timeoutPromise.then((res) => {
// console.log('---then---');
// console.log(res);
// });
//--- then ---
// 완료
const getPromise = (seconds) => new Promise((resolve, reject) => {
setTimeout(() => {
// if(xxx){
// resolve('성공')
// }else{
// reject('에러');
// }
resolve('에러');
}, seconds * 1000);
});
// getPromise(3)
// .then((res) => {
// console.log('--- first then ---');
// console.log(res);
// })
// .catch((res)=>{
// console.log('--- first catch ---');
// console.log(res);
// })
// .finally(()=>{
// console.log('--- finally ---');
// });
Promise.all([
getPromise(1),
getPromise(4),
getPromise(1),
]).then((res)=>{
console.log(res);
});
3. Async / Await
/**
* Async / Await
*/
const getPromise = (seconds)=> new Promise((resolve, reject) => {
setTimeout(()=>{
resolve('에러');
}, seconds * 1000)
});
async function runner(){
try{
const result1 = await getPromise(1);
console.log(result1);
const result2 = await getPromise(2);
console.log(result2);
const result3 = await getPromise(1);
console.log(result3);
}catch(e){
console.log('---catch e---');
console.log(e);
}finally{
console.log('---finally---');
}
}
runner();
반응형
'개발자 > Web' 카테고리의 다른 글
자바스크립트 기본 문법 강의 5 객체의 모든 것 (3) | 2024.10.16 |
---|---|
소스 코드가 포함된 50개의 자바스크립트 프로젝트 (3) | 2024.10.16 |
자바스크립트 기본 문법 강의 4 Class and OOP (2) | 2024.10.15 |
모든 자바스크립트 개발자가 알아야 할 33가지 기본 사항 (12) | 2024.10.15 |
50일 동안 50개의 프로젝트 - HTML/CSS 및 자바스크립트 (3) | 2024.10.01 |
모든 자바스크립트 개발자가 알아야 하는 33가지 개념 (8) | 2024.09.29 |
자바스크립트 기본 문법 강의 3 (3) | 2024.09.29 |
자바스크립트 기본 문법 강의 1 (16) | 2024.09.29 |
더욱 좋은 정보를 제공하겠습니다.~ ^^