프로그래밍-Web/Node.js(7)
-
[개념정리] 콜스택과 이벤트루프
자바스크립트가 함수를 호출하면 인터프리터가 이를 호출 Stack에 추가하고 함수를 수행한다 메인함수가 끝나면 인터프리터가 Stack에서 함수를 제거한다. (할당 공간보다 많은 공간을 차지하게 되면 stack overflow에서가 나게 된다.) 이렇게 코드를 작성하고 함수를 실행하면 스택에 무언가를 올리는 행위를 push, 함수로부터 무언가를 리턴받는 행위를 pop이라고 한다. 함수와 달리 객체들은 Heap에 할당된다. 자바스크립트 엔진은 이렇게 '메모리 Heap'과 'Call Stack'이라는 두가지 뼈대를 가지고 있다. 객체들은 Heap에 함수는 Stack에 할당이 되는 것이다. 하지만 Stack의 함수들이 바로 실행되는것이 아니다. 자바스크립트는 브라우저 위에서 돌아가는 경우가 많은데, 따라서 Sta..
2021.01.28 -
[이슈] 배열에 대한 비동기 처리 방법
Promise함수는 자바스크립트의 특징을 가장 잘 나타내는 함수인데, 요새는 async-await 구문을 이용하여 더욱 간단하게 처리하는 경우가 많다. 그러나 async-await구문은 배열을 인자로 받을 수는 없기 때문에, 배열 비동기 처리는 조금 더 고민이 필요하다. 예시는 arr이라는 배열에 대해 testFunction이라는 로직을 순차적으로 처리해 messages라는 새로운 배열을 만드는 것이다 직관적으로는 key마다 testFunction이 결과를 리턴해줄때까지 기다리고 messages를 만들것이라 추측할것이다 messages 결과: [ Promise { }, Promise { } ] 그러나 실제로는 pending하는 요소만 리턴하게 된다 왜냐하면 map은 각 원소가 처리될때까지 기다리지 않기 ..
2021.01.28 -
[이슈] .then vs await 비교
Promise함수는 자바스크립트의 특징을 가장 잘 나타내는 함수인데, 요새는 async-await 구문을 이용하여 더욱 간단하게 처리하는 경우가 많다. async-await는 NodeJS의 또 다른 핵심요소인 제너레이터에서 파생된 형식이다 무작정 async와 await를 붙이는 경우가 많아 정리할 겸 직접적인 비교를 해보려고 한다. 가장 흔한 예시가 위와 같은 형식이다 해당 코드를 돌려보면 1->2->3-> success의 순서로 콘솔이 찍힌다 Promise 객체를 가지고 있는 promise라는 함수가 존재하고, 얘는 내부로직이 끝났을때 resolve를 던진다. 예시의 내부로직은 setTimeout이기 때문에 1초가 지난 후에 resolve가 실행되는 것이다 (reject를 짜두었다면 promise 실행..
2021.01.28 -
[Issue] 객체가 더럽게 들어오는 경우
에는 args = JSON.parse(JSON.stringify(args)); 이렇게 json을 String 객체로 변환 후(JSON.stringfy) 다시 String을 json 객체(JSON.parse, String을 object로)로 변환해준다 보통 서버에서는 클라이언트로부터 받은 데이터를 object로, 클라이언트에선 그 반대로 사용할 일이 많다 근데 가끔 클라이언트에서 객체를 던지면, 이상한 태그가 많이 붙는데 두번 바꾸면 깔끔하게 객체 데이터만 나온다
2021.01.08 -
[Node.js] Sequelize와 MySQL 연결하기
무려 일곱시간을 헤맸다 ㅠㅠ 요게 자잘한 이슈들이 많아서 쉽게 접속이 되질 않는다. Sequelize는 Node.js에서 제공하는 ORM이다. ORM은 Object-Relation Mapping의 약자로, 딱 봐도 객체와 관련이 있어 보인다. 직역하면 '객체와의 관계 지도'정도 될 터인데, 사실 이놈을 사용함으로서 얻어지는 장점이 확 와닿진 않는다. 그러니까 도식화시켜보면 원래 이렇게 DB 접근을 위해서는, DB와 소통되는 언어인 쿼리를 사용해야 하지만 ORM이라는 친구가 있으면, 이렇게 DB와 대신 이야기해준다. 그러니까 쿼리를 잘 모르는 사람에게 매우 좋은 템일테다. 쿼리가 빠지면 코딩하는 양도 줄긴 할테고, 무엇보다 분업하기가 쉬울테니.. 자바는 JPA라는 유명한 ORM 기술 표준이 있고, 툴로는 ..
2020.02.24 -
[Node.js] 콜백함수와 Promise(2)
이제 문제는 뭐냐면 내가 실제로 코드를 짤 때 저걸 적용할 줄 모른다는거다. 에러처리만 할 줄 알면 뭐하나. 그래서 좀 피곤하더라도 새벽까지 포스팅을 하기로 했다. 이번에 실전이다 Promise는 세 가지 상태가 있다. 생성자로 new Promise 하고 나면, 끝날때 까지 셋 중 하나다. Pending 이거나, Fulfilled하거나 Rejected되거나. 각각은 완료전, 완료후 결과값 반환, 완료 실패다. 첫번째로 Pending, 그냥 함수만 불러온거다. 잠자고 있다. 두번째 Fullfilled. 이번엔 에러처리를 위한 코드가 아니라, 실제 에러처리를 내 코드에 적용하는 예시를 들어보았다. 이렇게 하니 이해가 존나 쉽고 코딩 잘할 것 같다. 무튼간에, 얘를 보면 원래는 getData라는 보잘 것 없는..
2020.02.20