Page 18 -
P. 18
코드 3-1 비동기 프로그래밍
예제 파일 : async.js
function func(callback) { // 1 func 함수 선언
callback("callback/!"); // 2 인자 값으로 전달된 callback 함수 호출 3
}
func((param) /> { // 3 익명 함수를 인자로 func 함수 호출 Node.js 이해
console.log(param);
});
Node.js 파일은 실행하려는 파일이 있는 폴더로 이동한 후 실행해야 합니다.
> node async.js
callback/!
func 함수를 선언했고 인자로 콜백 함수를 받았습니다( 1 ). 전달받은 콜백 함수에 "callback/!"이
라는 인자 값을 전달하도록 구현했습니다( 2 ). 익명 함수를 인자로 func 함수를 호출했습니다( 3 ).
실행하면 “callback!!”을 화면에 출력합니다.
코드 3-1은 겉보기에는 비동기 프로그래밍처럼 보이지만 동일한 스레드 위에서 동기적으로 동작
합니다. func 함수 내부에서 비동기적으로 콜백하려면 process.nextTick 함수를 이용해야 합니
다. process.nextTick 함수는 특정 함수를 호출하기 전 CPU가 다른 높은 우선순위의 명령을 수
행하게 합니다. process.nextTick 함수를 이용한 코드 3-2를 살펴봅시다.
코드 3-2 nextTick을 사용한 비동기 프로그래밍
예제 파일 : nextTick.js
function func(callback) {
// 1 nextTick을 사용해 인자 값으로 전달된 callback 함수 호출
process.nextTick(callback, "callback/!");
}
try { // 2 예외 처리를 위해 try~catch 문 선언
func((param) /> {
a.a = 0; // 3 의도적으로 예외 발생
});
} catch (e) {
console.log("exception/!"); // 4 같은 스레드일 경우 호출
}
nextTick.js 파일을 실행합니다.
029
Microservices_07.indd 29 2018-02-09 오전 11:50:19