パブリッシュ/サブスクライブとは何ですか? 例を挙げてみましょう。あなたは服を買うために店に行きます。あなたと店長はお互いを知りません。店長は自分の服を売るだけで、誰が買うかは気にしません。あなたは欲しい服を買うだけで、どの店が売っているかは気にしません。この時点で、店とあなたはパブリッシュ/サブスクライブの関係を形成します。 店に服のスタイルが並べられたら、欲しい服を探しに行きます。見つかったら買います。見つからなければ、店を出ます。プロセス全体はそれほど簡単です。 使用シナリオ 非同期通信、複数のページ間の通信、ページAのメソッドはページBのメソッドが呼び出されたときに特定の時間にトリガーされる必要がある コードに直接 クラス Publish { コンストラクタ() { このリストマップは {} です。 } // サブスクライブ on(key, fn) { this.listMap[キー] ? this.listMap[キー].push(fn) : this.listMap[キー] = [fn]; // サブスクリプションの添字を保存します fn const index = this.listMap[key].length - 1; // 購読解除関数を返す return () => this.clear(key, index); } // このキーへのすべてのサブスクリプションをキャンセルします off(key) { this.listMap[キー]を削除します。 } // キーで指定されたサブスクリプションをキャンセルする clear(key, index) { インデックス === this.listMap[キー].長さ - 1 ? this.listMap[キー].pop() : this.listMap[キー][インデックス] = null; } //一度購読し、トリガー後に自動的に購読を解除する once(key, fn) { this.on(キー、(...残り) => { fn(...残り); this.off(キー); }); } // キーを公開 トリガー(キー、...残り) { if(this.listMapのキー) { this.listMap[キー].forEach(fn => { fn(...残り); }); } } } 使い方 ob = new Publish(); //サブ1を購読する 定数sub1 = ob.on('sub1', (a, b) => { コンソールにログ出力します。 }); //サブ1を購読する 定数sub11 = ob.on('sub1', (a, b) => { コンソールにログ出力します。 }); ob.trigger('sub1', 2, 3); // サブ1 から登録解除 サブ1(); // サブ11 から登録解除 サブ11(); //sub3 を購読する ob.on('sub3', (a, b) => { コンソールにログ出力します。 }); //sub3 を購読する ob.on('sub3', (a, b) => { コンソールにログ出力します。 }); ob.trigger('sub3', 6, 7); // すべてのサブ3から登録解除 ob.off('sub3'); // 一度購読し、自動的に購読解除する ob.once('sub4', (a, b) => { コンソールにログ出力します。 }); ob.trigger('sub4', 8, 9); 要約する js のシンプルで粗雑な公開と購読に関するこの記事はこれで終わりです。より関連性の高い js のシンプルな公開と購読のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Dockerのインストール方法とDockerの4つのネットワークモードの詳細説明
>>: MySQL 5.7.10 インストール ドキュメント チュートリアル
目次要件: 進行中のアクティビティ データを照会する次のSQLクエリは、上記の4つの要件を満たし、タ...
この記事を読む前に、ボリューム、バインドマウント、tmpfs マウントの基本を理解しておいてください...
目次1. 需要2. 実装3. 結果1. 需要入力ボックスにデータを入力し、入力結果に基づいてデータベ...
目次MySQL ログファイルバイナリログBinlogログがオンになっていますログ記録を有効にする方法...
背景:サーバーがFlaskプロジェクトをデプロイし、python3をインストールしたため、再起動時に...
Zabbix独自のWEBインターフェースを例に、Web監視の設定を行います。環境: zabbix4....
かつて、サイコロを振るゲームについて話しました。その時は、steps 属性 + スプライト画像を使用...
目次プロキシ転送ルール最初のもの: 2番目のタイプ: 3番目のタイプ: 4番目のタイプ: 5番目:プ...
1. 環境整備1.MySQLインストールパス: /usr/local 2. CentOS 6.2 ...
アプリをテストしたいが、それを携帯電話で実行したくない場合があります。この場合、仮想マシンを使用して...
複数の値を組み合わせて表示これで、図1から図2に示す要件が揃いました。 どうやってやるんですか?次の...
MySQLをインストールしてメモしておきます。うまくインストールできるか分かりませんが、試してみます...
1. このマシンに新しい設定ファイルdocker_nginx.confを作成します。 サーバー{ 7...
コンポーネントに背景画像コントロールを追加するには、次の 2 つの手順だけが必要です。 <表示...
Pantherは新人としてスタートし、今もまだ新人ですが、人々から学び、学んだことを時々皆さんと共有...