• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

promise 관련 호출스택 질문

21.07.30 11:50 작성 조회수 81

0

안녕하세요

코드를 변경하여 아래처럼 실행하면 결과값이 wow, hi 순으로 출력이 되는데요..

영상에서는 태스크큐에서 then의 console.log()함수가 익명함수를 새치기를 한다고 말하신것 같은데..

결과값은 그럼 hi, wow 순으로 나와야 하는거 아닌지 궁금합니다.

function p() {
    return new Promise((resolvereject=> [

        setTimeout(() => {
            console.log('wow');
            resolve("hi");
        }, 3000)
    ])
}
p().then((data=> {
    console.log(data);
})

답변 1

답변을 작성해보세요.

1

console.log가 실행이 끝난 다음에야 resolve가 호출되고 then이 태스크큐로 가는 것이라서 이미 wow는 콘솔에 찍힌 상태입니다. 새치기라는 것은 태스크 큐에 들어있는 함수끼리 새치기를 하는 것입니다. console.log는 애초에 태스크큐로 가지 않습니다.