이벤트 루프

정태수·2022년 4월 19일
0

자바스크립트

목록 보기
2/4

선언과 호출

처음으로 17번째 줄에서 실행

function ingoo() {
    console.log('3')
    //log도 함수로 호출되어 콜스택이 쌓ㅇㅕ있다가 바로 빠진다(return 이 없음)
    return 4
}

hello(guak)
인자로 guak을 가지고 hello함수 호출
첫번째 실행은 goak 함수

function goak() {
    console.log('1')
    return ingoo()
}

function hello(callback) {
    goak()
    console.log('5')
    callback('6')
}

핼로우 먼저 스택에 깔림.
또 goak함수 스택에 깔림.
goak은 콘솔 1 찍고 ingoo() 실행

ingoo() 보니 콘솔3찍고 리턴 4만 내뱉어주고 아무것도 안한다.
그 다음 콘솔 5 찍고 바로 빠져나감.
매개변수 6을 callback에 넣었는데 페이크임 왜냐하면 goak은 인자값을 받지않음. 그냥 guak 똑같이 실행되는 거임.콘솔 1찍고 3찍고 끝남.

마지막 콘솔 typeof result
= number

노드 왜 스레드가 두개인데 싱글스레드라 하냐
관리할 수 있는 스레드는 한개임.
다른 하나는 비동기만을 처리하기위한 스레드임.

settimeout, setinterval, promise등

하나의 스레드가 하나의 콜스택
힙, 콜스택, 백그라운드, 큐스택 - 노드 설명

function a(callback){ //선언
  setTimeout(time2,0)  //비동기 -> 백그라운드 이동 (1)
  console.log('hello world') //호출
  setTimeout(time,0) //비동기 -> 백그라운드 이동 (2)
  callback()
}
console.log(3) //호출

function time2(){ //선언
  console.log('hi')
}

function time(){ //선언
  console.log('5')
} 

a(time)

3 콘솔 먼저 찍고
a라는 함수에 time인자로 넣고 호출

셋타임아웃은 백그라운드에 넣어놓고 큐스택에 들ㅇ간 함수는 time2 (아직 미실행)

콘솔 헬로월드 찍고

셋타임아웃 동일하게 큐스택에 time 넣어놓았음.

콜백함수가 바로 콜스택에 들어가서 time 함수 실행 하면 콘솔 5 찍음.

이후 콜스택 다 비어서 바로 큐스택에 들어가있는 time2 -> time 순으로 실행

hi 찍고 5 찍는다.

정답은 3 헬로월드 5 hi 5

손으로 정리한 호출순서인데 좀 지저분하다

profile
프론트엔드 개발자

0개의 댓글