网页排版精美的中文网站,微信小程序开发商家,什么是一学一做视频网站,企业官网模板站来自#xff1a;https://juejin.cn/post/7285915718666354723 和 https://nodejs.cn/api/events.html Nodejs核心API都是采用异步事件驱动架构#xff0c;在该架构中#xff0c;某些类型的对象#xff08;触发器#xff09;触发命名事件#xff0c;导致调用Function对象(…来自https://juejin.cn/post/7285915718666354723 和 https://nodejs.cn/api/events.html Nodejs核心API都是采用异步事件驱动架构在该架构中某些类型的对象触发器触发命名事件导致调用Function对象(监听器)就是通过有效的方法来监听事件的变化并在变化时执行相应的动作。例如当文件被打开时fs.ReadStream触发一个事件只要数据可供读取‘流’就会触发一个事件 所有触发事件的对象都是EventEmitter类的实列这些对象暴露了eventEmitter.on()函数允许将一个或多个函数绑定到对象触发的命名事件当EventEmitter对象触发事件时将同步调用附加到该特定事件的所有函数调用的监听器返回的任何值都将被忽略和丢弃
nodejs的事件模型
Nodejs事件模型采用了发布订阅模式Publish-Subscribe Pattern, pub-sub又叫观察者模式它定义了一种一对多的关系让多个订阅者同时监听某一个发布者 监听消息数量默认是10个
// EventEmitter 是一个允许你订阅和发布事件的类
const EventEmitter require(events)
// 定义一个新的类继承自 EventEmitter
class MyEmitter extends EventEmitter{}
const myEmitter new MyEmitter()
// 监听名为event的事件
myEmitter.on(event, (data){console.log(an event occurred1!, data)
})
myEmitter.on(event, (data){console.log(an event occurred2!, data)
})
myEmitter.on(event, (data){console.log(an event occurred3!, data)
})
myEmitter.on(event, (data){console.log(an event occurred4!, data)
})
myEmitter.on(event, (data){console.log(an event occurred5!, data)
})
myEmitter.on(event, (data){console.log(an event occurred6!, data)
})
myEmitter.on(event, (data){console.log(an event occurred7!, data)
})
myEmitter.on(event, (data){console.log(an event occurred8!, data)
})
myEmitter.on(event, (data){console.log(an event occurred9!, data)
})
myEmitter.on(event, (data){console.log(an event occurred10!, data)
})
// 调用.emit() 方法来触发 event 事件。一旦这个事件被触发所有注册为该事件监听器的回调函数都会被执行。在这个例子中触发事件会导致控制台输出 an event occurred!
myEmitter.emit(event,派发的值event data)//派发事件myEmitter.setMaxListeners(数量)
可以通过myEmitter.setMaxListeners(数量)来解除限制
myEmitter.setMaxListeners(20)//设置最大监听器数量为20once只监听一次
即使emit派发多次使用once也只会监听一次
// EventEmitter 是一个允许你订阅和发布事件的类
const EventEmitter require(events)
// 定义一个新的类继承自 EventEmitter
class MyEmitter extends EventEmitter{}
const myEmitter new MyEmitter()
// 监听名为event的事件
myEmitter.once(event, (data) {console.log(监听一次, data)
})
myEmitter.emit(event,派发的值event data)//派发事件
myEmitter.emit(event,派发的值event data1)//派发事件off取消监听
const EventEmitter require(events)
// 定义一个新的类继承自 EventEmitter
class MyEmitter extends EventEmitter{}
const myEmitter new EventEmitter()
const fn (msg) {console.log(msg)
}
// 监听名为event的事件
myEmitter.on(event, fn)
myEmitter.off(event, fn)//取消监听
myEmitter.emit(event,派发的值event data)//派发事件
myEmitter.emit(event,派发的值event data1)//派发事件应用
在process中用到了events process.once process.on