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