Nodejs事件 内置模块event 实现node event
Nodejs事件 内置模块event 实现node event
内置模块event
- 导入 const eventEmitter = require('event');
- 继承eventEmitter类
- 使用on方法监听,此方法的回调可多次执行
- 使用once方法监听,此方法的回调只执行一次
- 使用emit方法抛发事件,在抛发的时候根据监听函数的回调次数也差异,如3,4
案例
const eventEmitter = require('events');
//继承父类获取订阅事件的方法
class MyEventEmitter extends eventEmitter{}
const em = new MyEventEmitter();
//注册play事件,可多次执行回调函数
// em.on("play",function(movie){
// console.log("play...",movie);
// });
// 注册play事件,只执行一次回调函数
em.once('play',function(movie){
console.log("play"+movie);
});
//抛发play事件
em.emit('play','西游记');
em.emit('play','封神榜');
实现eventEmiiter
/*
自定义事件
实现自己的event
Object Events
API:
//存储事件名和回调函数数组
listens:{
eventname1:[callback1,callback2...],
eventname2:[callback1,callback2...],
eventname3:[callback1,callback2...]
},
//注册事件,如果已经有此事件,把回调函数添加到该事件push到对应的数组下。
//如果没有此事件,注册事件并初始化回调函数数组
on: function (eventname, callback) {
//如果没有事件名,初始化listen
if (!this.listen[eventname]) return this.listen[eventname] = [callback];
//如果有有事件名,把函数push到事件名对应的数组下,初始化
this.listen[eventname].push(callback);
},
//抛发事件,执行该事件下的所有回调函数
trigger: function (eventname) {
this.listen[eventname].forEach(fn => {
fn.call();
});
}
*/
var Events = {
listen: {},
on: function (eventname, callback) {
if (!this.listen[eventname]) return this.listen[eventname] = [callback];
this.listen[eventname].push(callback);
},
trigger: function (eventname) {
this.listen[eventname].forEach(fn => {
fn.call();
});
}
}
var ev = Events;
ev.on("play", cb => {
console.log("play success");
});
ev.trigger("play");
分类:
前端技术栈 / Nodejs
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具