返回顶部
首页 > 资讯 > 精选 >node.js自定义实现EventEmitter的方法是什么
  • 250
分享到

node.js自定义实现EventEmitter的方法是什么

2023-07-04 16:07:30 250人浏览 安东尼
摘要

这篇文章主要讲解了“node.js自定义实现EventEmitter的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“node.js自定义实现EventEmitter的方法是什么”吧

这篇文章主要讲解了“node.js自定义实现EventEmitter的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“node.js自定义实现EventEmitter的方法是什么”吧!

一、是什么

我们了解到,Node采用了事件驱动机制,而EventEmitter就是Node实现事件驱动的基础。在EventEmitter的基础上,Node几乎所有的模块都继承了这个类,这些模块拥有了自己的事件,可以绑定/触发监听器,实现了异步操作。Node.js 里面的许多对象都会分发事件,比如 fs.readStream 对象会在文件被打开的时候触发一个事件。这些产生事件的对象都是 events.EventEmitter 的实例,这些对象有一个 eventEmitter.on() 函数,用于将一个或多个函数绑定到命名事件上。

二、nodejs中EventEmitter使用方法

Node的events模块只提供了一个EventEmitter类,这个类实现了Node异步事件驱动架构的基本模式――观察者模式
在这种模式中,被观察者(主体)维护着一组其他对象派来(注册)的观察者,有新的对象对主体感兴趣就注册观察者,不感兴趣就取消订阅,主体有更新的话就依次通知观察者们

const EventEmitter = require("events")class MyEmitter extends EventEmitter {}const myEmitter = new MyEmitter()function callback() {    console.log("触发了event事件!")}myEmitter.on("event", callback)myEmitter.emit("event")myEmitter.removeListener("event", callback);

三、实现过程

基本代码如下所示:

//事件派发机制(function() {    var EventDispatcher = function() {        var EventDispatcherClosure = function() {        };        EventDispatcherClosure.prototype = {                        on: function(key, fn) {                //获取当前的事件对象                var curEvents = this._getCurEvents(key);                //先检查该事件是否已经注册过了                var flag = false;                for (var i = 0, len = curEvents.length; i < len; i++) {                    if (curEvents[i].name == fn.name) {                        //已经出现过了,以最新注册的函数为主                        flag = true;                        curEvents[i] = fn;                        break;                    }                }                if (!flag) {                    curEvents[curEvents.length] = fn;                }                this._reGISter(key, curEvents);            },                        dispatch: function(key) {                //获取当前的事件对象                var curEvents = this._getCurEvents(key);                var shouldDispatch = true;                for (var i = 0, len = curEvents.length; shouldDispatch && i < len; i++) {                    try {                        //获取参数                        var args = [];                        for (var j = 1, len1 = arguments.length; j < len1; j++) {                            args.push(arguments[j]);                        }                        shouldDispatch = curEvents[i].apply({}, args);                    } catch (e) {                        shouldDispatch = false;                    }                }                return shouldDispatch;            },            remove: function(key) {                if (this._getCurEvents(key)) {                    delete EventDispatcherClosure.events[key];                }            },                        _getCurEvents: function(key) {                return EventDispatcherClosure.events[key] || [];            },                        _register: function(key, events) {                EventDispatcherClosure.events[key] = events;            },        };        EventDispatcherClosure.events = {};        return {            create: function() {                return new EventDispatcherClosure();            }        };    };    window.EventDispatcher = new EventDispatcher().create();})();

首先定义一个全局变量的匿名函数,然后将全局变量挂在window上面,这样可以让我们在开发过程中的调用。在匿名函数的原型链上面添加事件分发、事件监听、事件删除等方法。

事件分发的调用

EventDispatcher.dispatch("test", obj)

事件监听

EventDispatcher.on("test", function callback(obj) {})

事件删除

EventDispatcher.on("test")

代码封装的比较简单

感谢各位的阅读,以上就是“node.js自定义实现EventEmitter的方法是什么”的内容了,经过本文的学习后,相信大家对node.js自定义实现EventEmitter的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: node.js自定义实现EventEmitter的方法是什么

本文链接: https://lsjlt.com/news/346473.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • node.js自定义实现EventEmitter的方法是什么
    这篇文章主要讲解了“node.js自定义实现EventEmitter的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“node.js自定义实现EventEmitter的方法是什么”吧...
    99+
    2023-07-04
  • node.js怎么自定义实现EventEmitter
    这篇文章主要介绍了node.js怎么自定义实现EventEmitter的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇node.js怎么自定义实现EventEmitter文章都会有所收获,下面我们一起来看看吧。一...
    99+
    2023-06-17
  • node.js怎么自定义实现一个EventEmitter
    这篇文章主要介绍“node.js怎么自定义实现一个EventEmitter”,在日常操作中,相信很多人在node.js怎么自定义实现一个EventEmitter问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”n...
    99+
    2023-06-20
  • node.js如何自定义实现一个EventEmitter
    目录前言 一、是什么 二、nodejs中EventEmitter使用方法 三、实现过程 前言 最近做了商品批发的需求,需要针对不同的商户选择对应的批发商品回显到原来的界面。由于该项...
    99+
    2024-04-02
  • android自定义dialog的方法是什么
    Android中自定义Dialog的方法有以下几种:1. 创建一个继承自Dialog类的自定义对话框:- 创建一个新的类,继承自Di...
    99+
    2023-09-21
    android
  • android自定义seekbar的方法是什么
    要自定义SeekBar,你可以使用xml布局文件和自定义的Style来实现。以下是一个简单的示例: 创建一个名为custom_se...
    99+
    2024-04-02
  • C/C++ QT实现自定义对话框的方法是什么
    这篇文章主要讲解了“C/C++ QT实现自定义对话框的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C/C++ QT实现自定义对话框的方法是什么”吧!对话框分为...
    99+
    2023-06-21
  • Android自定义View实现体重表盘的方法是什么
    本篇内容介绍了“Android自定义View实现体重表盘的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果视频分析起始角度如下图...
    99+
    2023-06-25
  • qt自定义表格的方法是什么
    在Qt中,可以使用QTableView类来创建和操作表格。下面是一些自定义表格的方法:1. 设置表格模型:使用QStandardIt...
    99+
    2023-09-29
    qt
  • mysql自定义字段的方法是什么
    在MySQL中,可以通过以下两种方法来自定义字段:1. 使用计算字段:- 计算字段是使用表中已有字段计算出来的结果。可以使用算术运算...
    99+
    2023-09-25
    mysql
  • mysql自定义函数的方法是什么
    在MySQL中,可以使用以下步骤来创建自定义函数:1. 创建函数:使用`CREATE FUNCTION`语句来创建函数,并指定函数的...
    99+
    2023-09-11
    mysql
  • mfc自定义控件的方法是什么
    MFC(Microsoft Foundation Class)是一种用于开发Windows桌面应用程序的C++框架。MFC提供了一组...
    99+
    2023-09-07
    mfc
  • linux自定义信号的方法是什么
    在Linux中,可以使用以下方法来自定义信号:1. 使用`signal()`函数:可以使用`signal()`函数来设置信号处理程序...
    99+
    2023-08-12
    linux
  • vue3自定义指令的方法是什么
    这篇文章主要介绍“vue3自定义指令的方法是什么”,在日常操作中,相信很多人在vue3自定义指令的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue3自定义指令的方法是什么”的疑惑有所帮助!接下来...
    99+
    2023-07-04
  • android自定义控件的方法是什么
    Android自定义控件的方法有以下几种:1. 继承系统控件:可以通过继承系统控件来进行扩展和定制。通过重写控件的绘制方法,修改控件...
    99+
    2023-08-16
    android
  • Java自定义异常的方法是什么
    本文小编为大家详细介绍“Java自定义异常的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java自定义异常的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、异常分为哪几种异常分为两种,分...
    99+
    2023-07-06
  • pgsql自定义排序的方法是什么
    在 PostgreSQL 中,可以通过创建自定义排序规则来实现自定义排序。以下是实现自定义排序的一般方法: 创建自定义排序规则函...
    99+
    2024-04-09
    pgsql
  • winform自定义控件的方法是什么
    要创建一个自定义控件,你需要按照以下步骤进行操作: 创建一个新的类并继承自System.Windows.Forms.Control...
    99+
    2024-04-09
    winform
  • C++类的定义与实现方法是什么
    这篇文章主要讲解了“C++类的定义与实现方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++类的定义与实现方法是什么”吧!一、类的定义根据C++ Primer中的描述,类的定义是一...
    99+
    2023-06-22
  • vue3自定义指令方法是什么
    这篇文章主要讲解了“vue3自定义指令方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue3自定义指令方法是什么”吧!一、注册自定义指令以下实例都是实现一个输入框自动获取焦点的自定...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作