10

私は Flux アーキテクチャで反応を使用しています。
Store を定義するには、次のようなことをしなければならないことを Web で読みました。

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 に必要な動作も含むディスパッチャーを作成する方がよいのではないでしょうか?

4

1 に答える 1

5

Dispatcher には、EventEmitter では提供されていない、または期待されていない機能があります。最も注目すべき機能は、waitFor です。これにより、ストアは、処理を進める前に、アクションに応答して別のストアが更新されたことを確認できます。

パターン的には、Dispatcher もシングルトンですが、EventEmitter は複数のストアにオブジェクトを割り当てることができる API です。

もちろん、両方の目的を果たす独自のハイブリッド クラスを作成することもできます。Facebook Fluxディスパッチャーはリファレンス実装です:)

于 2015-02-13T15:24:38.880 に答える