EventEmitter против диспетчера facebook

Я использую React с архитектурой Flux.
Я читал в Интернете, что для определения Store мне нужно сделать что-то вроде этого:

var AppDispatcher = require('../dispatcher/dispatcher'), //facebook's dispatcher
    EventEmitter = require('events').EventEmitter,
    assign = require('object-assign');

var MyStore = assign({}, EventEmitter.prototype, {
   .....

Насколько я понимаю, EventEmitter и диспетчер facebook имеют много общего. Например, оба могут генерировать (или отправлять) событие.
Мой вопрос: зачем мне нужны и EventEmitter, и диспетчер? Разве это не лишнее? Не лучше ли создать диспетчер, который также включает необходимое поведение EventEmitter?


person Naor    schedule 28.01.2015    source источник
comment
Точно так же и я думал!   -  person Jürgen Paul    schedule 02.02.2015
comment
@PineappleUndertheSea: ты пришел к выводу? :)   -  person Naor    schedule 03.02.2015


Ответы (1)


У Dispatcher есть функциональные возможности, которые не предусмотрены и не ожидаются в EventEmitter, наиболее заметным из которых является waitFor, который позволяет хранилищу гарантировать, что другое хранилище было обновлено в ответ на действие, прежде чем оно продолжится.

С точки зрения шаблона Dispatcher также является синглтоном, тогда как EventEmitter — это API, который вы можете назначать объектами для нескольких хранилищ.

Конечно, вы можете создать свой собственный гибридный класс для обеих целей. Диспетчер Facebook Flux — эталонная реализация :)

person James Pearce    schedule 13.02.2015