[node.js] api로 데이터를 가져오고 저장하는 문제
조회수 974회
node.js로 인터넷 데이터를 가져와서 저장하는 프로그램을 만들고 있습니다.
1초에 한 번씩, 데이터는 api로 받아오고 저장은 csv로 합니다.
현재 데이터를 받아오게 되면 아래와 같이 데이터가 순서대로 들어오지 않고 뒤섞이는 문제가 발생하고 있습니다.
02:03:01 02:03:02 02:03:04 02:03:03 02:03:05 02:03:06 02:03:07 02:03:08 02:03:10 02:03:09
제가 setInterval()을 사용하는데 setInterval에서 안에 들어가는 함수가 끝난 후에 함수를 다시 불러오는 방법 혹은 저런 문제가 생기지 않게 만드는 코딩 방식, 아이디어를 알고 싶습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
소스 확인했습니다. 이런 경우에는
sequence
를 기준으로 빼면 되겠네요./* 전략 */ var isOn = false; var lastSeq = 0; // 가장 최근에 체크한 sequence 값을 저장하는 변수 var getBTCData = function(){ if (isOn == false) { isOn = true; /* 중략 */ request({ url: "https://api.gopax.co.kr/trading-pairs/BTC-KRW/book?level=1", method: 'GET', json: true }, (error, response, body) => { console.timeEnd('requestTime:'); console.time('parsingTime:'); if (body.sequence > lastSeq) { // 더 최근값인지 체크해서 최신값 맞을 때만 let date = new Date().toLocaleString(); // 필요한 로직 수행 /* 중략 */ console.timeEnd('insertTime:'); isOn = false; lastSeq = body.sequence; // 로직이 다 끝나면 이 값도 최신것으로 업데이트 } }); } } setInterval(getBTCData, 1000);
- 제가 처한 상황이랑은 다른 경우네요. 저는 데이터가 1초에 한 번씩 {"sequence":4438497,"bid":[["4438387",7394000,0.44043107]],"ask":[["4438429",7403000,2.279]]} 이런 형태의 데이터를 가져오는데 이 데이터에 로컬타임을 붙여서 데이터를 저장하고 있습니다. 오해가 있는 것 같으니 위에 제가 만든 코드를 추가하도록 하겠습니다. TaeSun Yoo 2018.8.20 18:42
- 아 네 소스 확인했습니다. 답변 수정했으니 확인해 보세요~ 엽토군 2018.8.20 21:36
- 감사합니다! TaeSun Yoo 2018.8.21 07:53
댓글 입력