美文网首页
手写node事件模块原理

手写node事件模块原理

作者: 冰淇wbq | 来源:发表于2018-09-21 17:20 被阅读0次
  • node事件模块使用方法
let EventEmitter=require('events');
let {inherits}=require('util');
function Girl() {
    
}
inherits(Girl,EventEmitter);
let girl=new Girl();
girl.on('失恋',cry);
girl.emit('失恋');

function cry() {
    console.log('哭')
}
class EventEmitter{
    constructor(){
        this._events={};
    }
    on(eventName,callback){
        if(!this._events[eventName]){
            this._events[eventName]=[callback];
        }else {
            this._events[eventName].push(callback);
        }
    }
    once(eventName,callback){
        let fn=()=>{//绑定的是fn,执行的时候会触发fn函数
          callback();//fn函数中调用原有的callback
            this.removeListener(eventName,fn);//删除fn,再次执行时只会执行一次
        };
        this.on(eventName,fn);//1,先绑定,callback调用后再解绑,2要在callback中删除绑定

    }
    removeListener(eventName,callback){
        if(this._events[eventName]){
            this._events[eventName]=this._events[eventName].filter(cb=>cb!=callback);
        }
    }
    emit(eventName){
        if(this._events[eventName]){
            this._events[eventName].forEach(cb=>cb());
        }
    }
}
let ev=new EventEmitter();

let cry=()=>{console.log('cry')};
ev.once('失恋',cry);
ev.on('失恋',cry);
ev.removeListener('失恋',cry);
ev.emit('失恋');

相关文章

  • 手写node事件模块原理

    node事件模块使用方法

  • Node模块原理0926

    Node模块原理 1.node模块原理分析 js代码 2.node模块加载分析(多看几遍视频) 3.自己实现一下(...

  • 2018-08-20第五天课

    内置模块 => 直接使用 Node 提供好的核心模块 Event 事件模块事件模块是整个 Node.js ...

  • 14-手写Node模块系统-Node模块原理分析

    模块系统是nodejs的基础,使用频率也很高。在使用nodejs过程中,以下几个关于模块系统的问题是否常常困扰着你...

  • Node.js 核心模块概述

    模块加载原理与加载方式 Node 中的模块:核心模块/原生模块:Node提供的模块。文件模块:用户编写的模块。 N...

  • 使用node实现静态文件服务器,仿nginx 静态服务器

    原理:使用node http 模块 createServer 方法创建服务, fs 模块读取文件内容,net 模块...

  • Node.js 的 events 模块

    Node.js 没有浏览器的事件冒泡、事件捕获机制。 events 模块是 Node.js 基础及重要的模块, 只...

  • 搜狗面试

    原型链上手写事件,手写原生js实现ajax事件,jsonp实现原理,阻止事件IE冒泡代码,事件捕获、处理,冒泡代码...

  • Module

    module是node.js最常用的模块,是node.js的根基,主要作用是导入模块,组织模块。 简单原理 mod...

  • EventEmiter

    node采用了事件驱动机制,而eventEmitter就是node事件驱动的基础,node所有的模块都继承了Eve...

网友评论

      本文标题:手写node事件模块原理

      本文链接:https://www.haomeiwen.com/subject/nklznftx.html