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
   13   14   15   16   17   18   19   20   21