この記事では、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 サイトの他の関連記事を参照してください。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

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

ホットトピック









