때는 7월 초반쯤? 아마도 그쯤 갑자기 앞당겨진 전공동아리 정식 인원 면접을 봤다. 와 그 숨이 콱 막히고, 여름인데도 너무 추워서 겉옷을 입고 싶어지는 그 면접장 분위기를 잊지 못할 것이다...
아무튼 면접이 계속 진행되던 중 선배님께서 동기 처리 방식과 비동기 처리 방식에 대해 자유롭게 서술해 주세요.라는 질문을 던지셨고, 나는 대답했다. "네?"...
그래서 동기 처리 방식과 비동기 처리 방식에 대해 알아보려 한다!
✏️ 동기(synchronous : 동시에 일어나는)
✏️ 비동기(Asynchronous : 동시에 일어나지 않는)
const message = function() {
console.log("Hi, I'm siyeon");
}
setTimeout(message, 3000); // setTimeout함수는 자바스크립트에 내장된 함수
1. this를 사용한 콜백함수
2. 콜백지옥
// [문법 ]
const promise객체 변수 = new Promise((resolve, reject) => {
const 결과 = 실행코드;
if (reject 조건){
return reject(에러객체); //에러 반환
}
resolove(결과); //성공처리
});
return promise객체변수
const promise = new Promise((resolve, reject)=>{
//처리 내용
})
promise.then(
//resolve가 호출되면 then이 실행
)
.catch(
//reject가 호출되면 catch가 실행
)
.finally(
//콜백 작업을 마치고 무조건 실행되는 finally (생략 가능)
)
상태 | 설명 |
---|---|
Pending(대기) | 비동기 로직 처리에 비완료 상태 |
Fulfilled(이행) | 비동기 로직 처리가 완료된 상태, Promise 결과값 반환 |
Rejected(실패) | 비동기 로직 작업 실패 또는 오류 |
async function 함수명() {
await 비동기 처리 메서드명()
}
// 3초 동안 기다리고 이름을 리턴하는 함수
async function getName() {
await delay(3000);
return 'siyeon';
}
// 1초 동안 기다리고 나이를 리턴하는 함수
async function getAge() {
await delay(1000);
return 18;
}
getName().then(console.log); // 결과 : siyeon
getAge().then(console.log); // 결과 : 18
이 글은 정말 인상적이었습니다.