Node.js のイベント モジュールについての学習とチャット
この記事では、Node.js のイベント モジュールを理解し、イベントのパブリッシュおよびサブスクライブ モデルを紹介します。皆様のお役に立てれば幸いです。
イベント モジュール
参考公式 Web サイト: events イベント トリガー | Node.js
http ://nodejs.cn/api/events.html
Events
モジュールは Node の最も重要なモジュールであり、属性 EventEmitter
,# を提供します##EventEmitter の中核は、イベントの発行とイベント リスナーです。
Node のモジュールのほとんどは、Events モジュールから継承します。
- Events
モジュールは、Node の
パブリッシュ/サブスクライブ モード (パブリッシュ/サブスクライブ) の実装です。 1 つのオブジェクトがこのモジュールを通じて別のオブジェクトにメッセージを渡します。
このモジュールは、 - EventEmitter
属性を通じてコンストラクターを提供します。このコンストラクターのインスタンスには、指定されたイベントをリッスンし、コールバック関数をトリガーするために使用できる
onメソッドがあります。
任意のオブジェクトは、指定されたイベントを発行できます。これらのイベントは、 - EventEmitter
インスタンスの on メソッドによって監視されます。
パブリッシュおよびサブスクライブ モデル
パブリッシュおよびサブスクライブ モデルについては、以前のブログ記事を参照してください。
Events のパブリッシュおよびサブスクライブ モデルに関しては、まずその一般的なメソッドのいくつかを理解する必要があります。
- サブスクリプション メソッド: on
メソッドは、イベントをサブスクライブするために使用されます。サブスクリプションは、メソッドを 1 対多の関係にマップします。
- 公開メソッド: emit
サブスクライブされたイベントを実行するために使用されます。
- Unsubscribe: off
メソッドは、対応するイベント リスナーを削除できます。
- Subscribe Once: once
バインドされたイベントは、実行後にサブスクライブされたイベントを自動的に削除します。
on と Emit
on メソッドの最初のパラメータはクラス名を設定するために使用され、2 番目のパラメータは公開時に渡されるパラメータを受け取ることができる関数でもあります。
emit メソッドの最初のパラメータはクラス名で、後続のパラメータは
on メソッド関数に渡されるパラメータです。
on および
emit 特定のアプリケーションについては、以下の簡単なデモを参照してください。
const EventEmitter = require('events'); // 自定义一个 构造函数 function Cat() {} // 原型继承 需要通过实例来调用继承方法 Object.setPrototypeOf(Cat.prototype, EventEmitter.prototype); let cat = new Cat(); const sleep = (a, b) => { console.log(a, '睡'); }; const eat = (a, b) => { console.log(b, '吃'); }; cat.on('猫咪', sleep) cat.on('猫咪', eat) setTimeout(() => { // 小胡子 吃 // 小胖仙 睡 cat.emit('猫咪', '小胖仙', '小胡子') }, 1000);
on メソッドと
emit メソッドのセットを実装できます。
function EventEmitter() { this._event = {} } // on 方法 EventEmitter.prototype.on = function (eventName, callBack) { if (!this._event) { this._event = {} } if (this._event[eventName]) { this._event[eventName].push(callBack) // 相当于 {eventName:[fn1,fn2]} } else { this._event[eventName] = [callBack]; // 相当于 {eventName:[fn1]} } } // emit 方法 EventEmitter.prototype.emit = function (eventName, ...args) { this._event[eventName].forEach(fn => { fn(...args) }); }
off
off メソッドの最初のパラメータはクラス名を設定するために使用され、渡される 2 番目のパラメータは次のように指定する必要があります。関数コールバックを削除しました。
// ... setTimeout(() => { // 小胡子 吃 // 小胖仙 睡 cat.emit('猫咪', '小胖仙', '小胡子') cat.off('猫咪', sleep); // 小胡子 吃 cat.emit('猫咪', '小胖仙', '小胡子') }, 1000);
filterメソッドです。
// off 方法 EventEmitter.prototype.off = function (eventName, callBack) { if (this._event && this._event[eventName]) { this._event[eventName] = this._event[eventName].filter( fn => fn !== callBack && fn.c !== callBack // fn.c参考下面的once方法实现 ) } }
once
once メソッドの最初のパラメータはクラス名を設定するために使用されます。2 番目のパラメータは渡され、必要なのは一度実行される関数コールバック。
// ... const demolition =() => { console.log('拆家'); } cat.once('猫咪', demolition) setTimeout(() => { // ...... 拆家 cat.emit('猫咪', '小胖仙', '小胡子') }, 1000);
on と
off に基づいてこのメソッドを実装できます。
// once 方法 EventEmitter.prototype.once = function (eventName, callBack) { const one = () => { callBack(); this.off(eventName, one); } this.on(eventName, one); }
once メソッドを実行する前に
off メソッドを通じて削除した場合です。
once メソッド
にいくつかの変更を加える必要があります (off メソッドはすでに処理されています) )
。
EventEmitter.prototype.once = function (eventName, callBack) { const one = () => { // ... } one.c = callBack; // 自定义一个属性 // ... }
once メソッドを実装しました。
nodejs チュートリアル を参照してください。 !
以上がNode.js のイベント モジュールについての学習とチャットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

Nodejs実行可能ファイルをpkgでパッケージ化するにはどうすればよいですか?次の記事では、pkg を使用して Node プロジェクトを実行可能ファイルにパッケージ化する方法を紹介します。

ノードが npm コマンドを使用できない理由は、環境変数が正しく設定されていないためです。解決策は次のとおりです: 1. 「システムのプロパティ」を開きます; 2. 「環境変数」->「システム変数」を見つけて、環境を編集します。変数; 3.nodejs フォルダーの場所を見つけます; 4.「OK」をクリックします。
