質問: フロントエンドjavascriptにおいてpubsubパターンとカスタムイベントの違いがイマイチ分かりません。 個人的な以下のような認識を持っています。 * pubsubパターン:DOMに依存しない * カスタムイベント:DOMに依存、javascriptのイベント特有の処理を行う * どちらとも、「トリガーによって起動する処理を登録・実行する」という役割は変わらない この認識がそもそも正しいのか? 正しくないのであればこの2つの違いはなんなのか? をご教示お願いします。
回答: Javascript と独立した用語として、「イベント」はメッセージの送信と受け取りがほぼ同時であり、送信時に Listen していなければ受け取れないのが一般的ですが、「pubsubパターン」ではそのようなことはなく、送信されたメッセージを溜めておいてあとからまとめて受け取るというような場合も考えられるという違いがあります。 カスタムイベントは DOM の機能ですが、pubsubパターンというのは名前の通りパターンの一種ですから、単純に対比させることはできません。カスタムイベントはpubsubパターンの実装の一つと捉えることもできると思います。 その上であえて2つの特徴を述べるとすれば、 * Bubbling/Capturing といった、イベントの伝達を階層的に行う機能を利用したい場合は DOM のカスタムイベントが向いています。これはpubsubパターンそのものにはない機能です。 * Listen/Subscribe するまえに通知されたメッセージの履歴も受け取りたい場合などは、カスタムイベントではなくpubsubパターンを独自に実装することになります。