비동기 2

자바스크립트는 싱글 스레드인데 왜 비동기가 가능할까?

동공 지진, 그 시작 자바스크립트를 이용해 본격적으로 웹 개발에 입문할 때, 주기적으로 세뇌(?)당하는 이야기가 있는데 바로 자바스크립트가 싱글 스레드 기반의 언어라는 것입니다. 취업 준비하면서도 종종 나오는 주제 중 하나로 언급되고, 관련한 문제도 봤던 기억이 있습니다만, 도대체 이게 왜 자꾸 강조가 되는지 마음속으로 받아들이지 못했던 것 같습니다. 무엇보다 싱글 스레드라면 굉장히 제한적일 거 같은데 가능한 것들 중에는 이런 질문들이 있었습니다. 비동기는 어떻게 가능한 것인가. 동시에 두 가지가 동작하려면 멀티 스레딩을 해야한다고 배웠는데! 그럼 node 기반의 서버는 무조건 하나의 스레드에서만 동작한다는 뜻일 텐데 느리지 않을까? 아쉽게도, 아니 정확히는 이 질문에 대해 이해를 시켜주기에는 넓은 영역..

JavaScript 2021.03.21

async, await, promise로 비동기 동기 처리하기

자바스크립트를 배워나가는 시점에서 가장 헷갈리는 것은 '비동기'인 것 같습니다. 어떤 개념인지는 이해하고, 대표적인 함수들은 알겠지만, 새로운 것을 가져올 때 의도한 대로 항상 동작하지 않아서 인터넷을 찾아보면 대부분 비동기였기 때문에 일어나는 문제였습니다. 자바스크립트에서도 다른 언어들처럼 db와 연결하여 쿼리문을 통해 데이터를 조회하거나 수정할 수 있습니다. 이걸 연습하던 도중, 쿼리문으로 조회한 내용을 어딘가 저장해두거나, 함수 안에서 받아서 추가적인 연산을 하고 싶거나, 혹은 그 값으로 다시 새로운 쿼리문을 작성해야 할 때 고민이 생겼습니다. 비동기다 보니, 그 값을 어딘가 담아두기도 애매하고 (node js 표준 입력에서 겪은 문제와 비슷한 거 같습니다) 하나를 처리하고 그다음으로 넘어가야 하는..