본문 바로가기

개발

[Node.js] callback 함수 사용하기

MEAN STACK node.js

테스트 환경 : Windows 10 64-bit



파라미터로 함수를 넘겨 함수 내부에서 파라미터로 

넘어온 함수를 실행시키는걸 콜백함수라 한다.  

다른 함수를 통해 함수가 호출된다고 보면 된다.


Node.js는 콜백을 많이 사용한다.

Node.js의 모든 API는 콜백을 지원하는 방식이다.

Node.js 애플리케이션은 가능한 비동기로 처리해야 하며,

IO작업이 적은 애플리케이션이나 단위작업용으로 사용을 권장한다.


먼저, 자바스크립트 파일을 하나 만들었다. 


아.. 그전에 npm을 이용해서 fs모듈을 설치하자.

npm install fs


npm 관련 포스팅 : http://jlblog.me/35




설치된 fs모듈을 호출하여 파일을 읽는 소스이다. 

콜백함수 없이 직접 함수를 호출한다.

1
2
3
4
5
6
7
var fs = require("fs");
console.log("================== Program start");
 
var data = fs.readFileSync('input.txt');
console.log(data.toString());
 
console.log("================== Program Ended");
cs



CMD창에서 자바스크립트 파일을 실행해보자.

node 파일명.js


input.text 파일을 미리 만들어두지 않았다면 에러메시지가 보일 것이고,

아니라면 아래 이미지처럼 나올것이다.



프로그램 시작과 끝사이에 파일을 읽어 표출하는걸 확인할 수 있다.



다음은 콜백함수를 이용해보자.

1
2
3
4
5
6
7
8
9
10
11
var fs = require("fs");
console.log("================== Program start");
 
fs.readFile('input.txt'function (err, data) {
    if (err){
        return console.error(err);
    } 
    console.log(data.toString());
});
 
console.log("================== Program Ended");
cs



아래는 결과 이미지이다.


프로그램 종료 이후에 파일의 내용을 표출하는걸 알 수 있다.


뭘까? 두 샘플의 차이점은..

일부러 텍스트 파일을 없애고 해보니 조금은 알겠다.

첫번째 경우는 파일이 없을 경우 에러를 출력하고 프로세스가 멈춰버린다.

두번째 경우는 파일이 없을 경우 프로세스는 정상 종료하고 에러를 출력한다.


콜백함수를 통해 코딩이 된 경우는 좀 더 안정적으로 프로그램을 만들 수 있지 않을까 하는 생각이 든다.

오늘의 요점은 Node.js는 비동기식(이벤트)으로 프로세스를 처리한다는 것.


참조 : http://www.tutorialspoint.com/nodejs/nodejs_callbacks_concept.htm








'개발' 카테고리의 다른 글

[Node.js] Event Emitter  (0) 2015.12.14
[Node.js] event loop  (0) 2015.12.14
[Node.js] NPM - Node Package Manager  (0) 2015.12.09
[Node.js] REPL 사용  (0) 2015.12.08
[Node.js] http server 만들기  (0) 2015.12.08

맨 위로