webAPI

25tutmmu·2022년 5월 20일
0
console.log("11111")
setTimeout(()=>{
	console.log('22222')
},3000)
console.log("33333")

브라우저에서는 이 코드는 어떻게 실행될까?

11111
33333
3초후 22222

자바스크립트는 최대 한번에 한줄의 코드만 실행합니다.
자바스크립트는 싱글 스레드인데 이렇게 작동하는 이유는 브라우저의 webAPI가 일을 대신해 주기 때문이다. 브라우저의 경우 C나 C++로 작성되었기때문에 가능하다.

자바스크립트는 "11111" 실행, 브라우저에게 3초뒤"22222"실행해줘 명령후 바로"33333" 을 실행하는 것이다. 그렇기 때문에 저 순서대로 실행된다. 시간 기록의 경우 브라우저가 하게 된다.
(콜스택에 "11111"들어옴 실행 ,"22222"들어옴 ->webapi로 옮겨서 3초시간 재기 ->콜스택에"33333"들어옴실행-> 3초후 콜백큐에 "33333"넣음-> 콜스택에"33333"들어옴 실행)

0개의 댓글