게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
javascript callback 이해가 안되네요 ㅠㅜㅜ
게시물ID : programmer_4733짧은주소 복사하기
작성자 : smileToday
추천 : 0
조회수 : 723회
댓글수 : 8개
등록시간 : 2014/07/28 15:28:15

Javascript에 익숙하지 않아서 도움이 필요해서 글을 남기게 되었습니다. 혼자서 해결하려고 하니 막막해서 염치 불구하고
이렇게 글을 올리게 되었습니다.

기존 프로젝트에 node js 모듈 oracle을 사용해서 connection 당 fork를 해서 접근하도록 되어 있습니다.
메모리 릭인지 어떤 문제인지 모르겠지만 불규칙적으로 fork 하는 부분에서
새로운 프로세스가 생성이 안되면서 오류가 나는데 어떻게 도대체 무슨 문제인지....ㅠㅜ

generic-pool을 사용해서 oracle 접근도 해봤는데 오라클 connection 맺는 부분에서 메모리 릭이 발생하는지
메모리가 올라가서 포기 했습니다.

그래서 자식 프로세스를 생성해서 그 쪽에서 쿼리를 하도록 했는데 나중에 fork가 안되는 일이 발생합니다.

결론은 디비 접근 하는 부분만 따로 빼서 자바로 만들려고 합니다.

tcp 접근이 data이벤트로 날라오기 때문에 callback 부분을 저장해뒀다가 client.on 이벤트 data로 날라오게 되면 callback 하려고 하는데 이렇게 짜는게 맞는건지 몰라서요. java, c#을 하다가 javascript 콜백이랑 비동기 정말 이해가 안되네요. ㅠㅠ
코드를 이렇게 짜는게 맞는지 지적 부탁드립니다. 아니면 관련 url 좀 링크 부탁드립니다. 감사합니다.

var arr = [];
var queryCnt = 0;

function execute(query, params, callback) {
arr.push({queryCnt:queryCnt++ : callback : callback}); // 1. tcp 소켓으로 데이터를 받을 때 위해 arr에 저장
string msg = JSON.stringfy({query:query,params:params});

client.write(msg);
};

client.on('data', function (data) {
var ret = JSON.parse(data);
var cb = arr[ret.queryCnt].callback; // 2. 데이터를 받으면 callback 실행
cb(ret);
});

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호