Dispatcher

Dispatcher는 중앙허브다.

역할은 간단하다. View에서 어떤 Action이 발생하면 Dispatcher가 받는다.

Dispatcher에는 Store들이 등록해놓은 Action Type에 대한 Callback이 있다.

그래서 Action이 발생하면 Dispatcher는 등록된 모든 Store들에게 Action을 전파한다.

Action의 Type에 맞는 Store의 Callback이 있다면 실행되도록 도와준다.

이것이 Dispatcher의 역할이다.

아주 심플하지 않은가 ?

그리고 Dispatcher는 Store간의 의존성을 관리할 수 있는데

case 'TODO_CREATE':
  Dispatcher.waitFor([
    PrependedTextStore.dispatchToken,
    YetAnotherStore.dispatchToken
  ]);

  TodoStore.create(PrependedTextStore.getText() + ' ' + action.text);
  break;

위 코드와 같이 Store의 Callback 안에서 waitFor메소드를 사용해 해당 Store의 로직이 실행되기 전에 다른 Store에 대한 사전작업을 시킬 수 있다.

위 코드에서 waitFor메서드안에 배열로 던져진 요소들의 작업이 끝난 후 TodoStore가 Create메서드를 호출하는것을 볼 수 있다.