1

例に直接飛び込む方が簡単だといつも思っていました。

object.on('eventone', function() {
  console.log('eventone - listener one');
  object.trigger('eventtwo');
});
object.on('eventone', function() {
  console.log('eventone - listener two');
});
object.on('eventtwo', function() {
  console.log('eventtwo');
});
object.trigger('eventone');

ほとんどの PubSub 実装では、これにより次のログ順序になります。

  1. eventone - リスナー 1
  2. イベントツー
  3. eventone - リスナー 2

これまで、このシーケンスのセマンティクスに問題がありました。多くの場合、開発者は 'eventone' のすべてのリスナーが 'eventtwo' が開始する前に起動したと想定します。これは、トラックのさらに下にシーケンス ロジックのバグを導入する可能性があります。より賢明なログの順序は次のようになります。

  1. eventone - リスナー 1
  2. eventone - リスナー 2
  3. イベントツー

だから私は質問だと思います - ほとんどの実装がイベントキューイングに従わないのはなぜですか? そして、それを使用する場合と使用しない場合の影響は何ですか。

乾杯!

4

1 に答える 1

1

Pubsub は、1 つのサブスクライバーが他のサブスクライバーに依存したり、認識したり、妨害されたりしないように機能することを目的としています。以下に、各アプローチの長所と短所を探るいくつかの質問を示します。

于 2012-09-14T05:06:19.763 に答える