javascript도 객체지향언어이다. 즉, C++이나 Java에서 사용되는 콜백루팅을 구현할 수 있다.

Callback을 구현하여 사용하면 프로그램 동작중에 서브루틴이 외부에서 구현된 함수를 비동기적으로 호출이 가능해진다.

 

우선 Callback Event 객체를 만든다.

1
2
3
var CallbackEvent=function(){
    this.callback_method;
};
cs

 

그리고 여기선 Caller에서 메서드를 호출하게 Event를 등록하는 객체를 구현한다.

1
2
3
4
5
6
var EventRegister=function(event){
    this.callbackEvent=event;
    this.work=function(){
        this.callbackEvent.method();
    }
}
cs

 

이제 Callback을 호출하는 method를 구현하여 Event를 등록해보자

1
2
3
4
5
6
7
8
9
10
11
var EventApp=function(){
    this.execution=function(){
        var callbackEvent=new CallbackEvent();
        callbackEvent.method=function(){
            print('caller로 부터 호출됨');
        }
 
        var eventRegister=new EventRegister(callbackEvent);
        eventRegister.work();
    }
};
cs

 

이제 사용해 볼 차례

1
2
var eventApp=new EventApp();
eventApp.execution();
cs

 

이렇게하면 외부에서 구현된 Callback Method가 callee(피호출자)에서 caller(호출자)를 호출하게된다.

 

제작년에 공부한 내용이 메모장에 적혀있길래 간략히 사용법만 올려본다... 문법은 다르지만 java에서도 이러한 패턴으로 구현하면 된다.

Posted by duehd88
,