파이썬은 blocking 언어이고 JS는 none blocking 언어이다

자바스크립트는 한번에 하나밖에 할 수 없다 ex) user input, event, fetch, etc.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/899c35a2-8607-4aad-b275-750c142892d1/Untitled.png

alert() 는 blocking 언어여서 이런 상황에 console이 출력 안되고 있다

by leonardomso & jakeseo_me # #

9. Message Queue and Event Loop

https://user-images.githubusercontent.com/24728385/105712170-cca61b00-5f5c-11eb-89bb-a2990fa0e616.png

코드 1: 사고방식 깨우기

function main() {
  console.log('A');
  setTimeout(
    function display() { console.log('B'); }
  , 0);
  console.log('C');
}

main();
// 출력
// A
// C
// B

우리는 'A'와 'C'를 콘솔에 로깅하는 2개의 console.log를 가진 main 함수를 갖고 있습니다. 그리고 그 사이에 'B'를 콘솔에 로깅하는 0ms의 딜레이를 가진 setTimeout 함수를 호출합니다.

https://user-images.githubusercontent.com/24728385/105712433-20b0ff80-5f5d-11eb-8d7c-2a66413a7071.png

  1. 메인 함수에 대한 호출이 먼저 프레임으로 stack에 push 됩니다. 그 후에 브라우저가 메인 함수 내부의 첫번째 statement(console.log('A'))를 stack에 넣습니다. 이 statement가 실행되고 완료되자마자 해당 프레임은 스택에서 pop 됩니다. 알파벳 A가 콘솔에 표기됩니다.