• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

await 원리 질문 드립니다

22.02.17 18:14 작성 조회수 194

2

항상 답변 해주셔서 감사합니다

async함수에서 await 키워드의 원리가 제가 생각한 것이 맞는지 궁금합니다. 

1. 전역 실행 컨택스트 생성후 콜스택 푸시 

2. foo 함수 실행 -> foo 실행 컨택스트 생성 후 콜스택 푸시 

3. delay1000 함수 실헹 

4. 프로미스 생성자 함수가 전달받은 콜백함수를 web api에 넘기고 프로미스 객체를 반환하고 종료

5. foo 실행 컨텍스트에서 await 키워드로 인해 프로미스가 settled 상태가 될 때까지 대기 

6. webapi에서 콜백함수 처리 후 프로미스 상태 fulfilled로 변경 

7. 런타임 이어서 진행

const delay1000 = async a => new Promise(resolve => 
  setTimeout(() => resolve(a), 1000));

const foo = async () => {
  const bar = await delay1000(1111);
  console.log(bar);
}

foo();

답변 1

답변을 작성해보세요.

1

네 좋아보이는데요? :)

박재영님의 프로필

박재영

질문자

2022.02.17

답변 감사합니다 ! 속이 다 시원하네요 좋은 저녁 보내세요~:)