7038


フロントエンドjavascriptにおいてpubsubパターンとカスタムイベントの違いがイマイチ分かりません。

個人的な以下のような認識を持っています。

  * pubsubパターン：DOMに依存しない 
  * カスタムイベント：DOMに依存、javascriptのイベント特有の処理を行う 
  * どちらとも、「トリガーによって起動する処理を登録・実行する」という役割は変わらない 

この認識がそもそも正しいのか？  
正しくないのであればこの２つの違いはなんなのか？

をご教示お願いします。


CC BY-SA 3.0
2015-02-24T13:54:20.990
7037
2015-02-24T20:50:25.810
8289
question
javascript
フロントエンドjavascriptのpubsubパターンとカスタムイベントの違い・使い分け


Javascript と独立した用語として、「イベント」はメッセージの送信と受け取りがほぼ同時であり、送信時に Listen
していなければ受け取れないのが一般的ですが、「pubsubパターン」ではそのようなことはなく、送信されたメッセージを溜めておいてあとからまとめて受け取るというような場合も考えられるという違いがあります。

カスタムイベントは DOM
の機能ですが、pubsubパターンというのは名前の通りパターンの一種ですから、単純に対比させることはできません。カスタムイベントはpubsubパターンの実装の一つと捉えることもできると思います。

その上であえて２つの特徴を述べるとすれば、

  * Bubbling/Capturing といった、イベントの伝達を階層的に行う機能を利用したい場合は DOM のカスタムイベントが向いています。これはpubsubパターンそのものにはない機能です。

  * Listen/Subscribe するまえに通知されたメッセージの履歴も受け取りたい場合などは、カスタムイベントではなくpubsubパターンを独自に実装することになります。


CC BY-SA 3.0
2015-02-24T14:37:44.877
7038
2015-02-24T20:50:25.810
2015-02-24T20:50:25.810
8000
3639
7037
answer