js async,await을 실행 컨텍스트 관점에서 보기

정태민·2023년 4월 26일
0

자바스크립트

목록 보기
8/12

async function asyncFunction() {
console.log('async function - start');
const result1 = await new Promise(resolve => {
setTimeout(() => {
console.log('async function - promise1 resolved');
resolve(1);
}, 1000);
});
const result2 = await new Promise(resolve => {
setTimeout(() => {
console.log('async function - promise2 resolved');
resolve(2);
}, 1000);
});
console.log('async function - end');
return result1 + result2;
}

asyncFunction().then(result => console.log('async function - promise completed with result:', result));

async 함수 내부에서 await 키워드를 사용하여 호출한 모든 비동기 함수와 Promise 객체는 마이크로 태스크 큐(microtask queue)에 추가됩니다. 따라서, async 함수 내부에서 비동기 함수를 호출하는 경우, 해당 실행 컨텍스트 내의 모든 작업은 마이크로 태스크 큐에서 처리됩니다.

async 함수 내부에서 비동기 함수를 호출하는 경우, 해당 비동기 함수가 완료될 때까지 async 함수의 실행이 일시 중지됩니다. 이 때, 마이크로 태스크 큐에 추가된 작업들은 모두 순차적으로 처리됩니다. 따라서, async 함수 내부에서 비동기 함수를 호출하면, 해당 실행 컨텍스트 내부의 모든 작업이 마이크로 태스크 큐에서 처리되므로, 실행 순서가 보장됩니다

profile
퇴근후 30분 출근전 30분

0개의 댓글