Node.js Node.js는 chrome v8 javascript 엔진으로 빌드된 javascript 런타임 이라고 정의되어 있습니다. 정의를 보면 node.js는 자바스크립트 실행기가 맞습니다. 그런데 Node.js는 V8 엔진과 더불어 libuv 라는 라이브러리를 사용하여 이벤트 기반, 논 블로킹 I/O 모델을 구현하고 있다고 말합니다. 이에 대해 자세히 알아보겠습니다. 용어 정의 넘어가기 전에 용어들을 명확히 짚고 넘어가야 할 것 같습니다. > * 이벤트 기반 : 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식, 미리 지정해둔 작업이라 함은 콜백함수나 이벤트 리스너 등이 될 수 있다. > * 논 블로킹 I/O : 이전 작업이 완료될 때 까지 대기하지 않고 다음 작업을 바로 수행하는 것. > * 호출 스택(Call Stack) : 실제 실행할 작업들이 쌓여있는 스택 > * 백그라운드 : 타이머나 이벤트 리스너들이
setState의 동작 배경 SQLExecute한 결과의 ResultSet을 출력하는 로직 작성 개발 3 개의 쿼리를 작성하고 실행하면 3 개의 response가 3개의 결과탭으로 나타나야 합니다. 해당 쿼리들은 수행 시간이 오래 걸리지 않습니다. 문제도 발생하지 않습니다. 다만 쿼리 수행 시간이 오래 걸리는 쿼리에 대해서는 이야기가 달라집니다.
ForEach의 동작 먼저 예시 프로그램을 하나 보겠습니다. list에는 순서대로 timeout의 값들이 들어가 있고 forEach를 통해 순회하면서 testFunction을 실행하여 해당 결과를 출력해주는 프로그램입니다. 순서대로 반복한다는 점에서 개발자는 3000, 2000, 3000, 4000, 1000, 1000, 2000, 3000, 1000, 1000의 순서대로 결과가 출력된다는 것을 예측할 수 있습니다. 그런데 순서가 이상합니다. 숫자가 작은 것부터 큰 것 순으로 마치 정렬된 것 처럼 결과가 출력되었습니다. forEach는 해당 코드와 같이 동작합니다. list의 요소를 순회하면서 callback 함수를 ‘호출’합니다. callback 함수에 비동기 로직이 존재한다면? 이전 ca