- Assertion testing
- Asynchronous context tracking
- Async hooks
- Buffer
- C++ addons
- C/C++ addons with Node-API
- C++ embedder API
- Child processes
- Cluster
- Command-line options
- Console
- Corepack
- Crypto
- Debugger
- Deprecated APIs
- Diagnostics Channel
- DNS
- Domain
- Errors
- Events
- File system
- Globals
- HTTP
- HTTP/2
- HTTPS
- Inspector
- Internationalization
- Modules: CommonJS modules
- Modules: ECMAScript modules
- Modules:
node:module
API - Modules: Packages
- Net
- OS
- Path
- Performance hooks
- Permissions
- Process
- Punycode
- Query strings
- Readline
- REPL
- Report
- Stream
- String decoder
- Test runner
- Timers
- TLS/SSL
- Trace events
- TTY
- UDP/datagram
- URL
- Utilities
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- Worker threads
- Zlib
Node.js v18.12.1 documentation
- Node.js v18.12.1
-
► Table of contents
- Events
- Passing arguments and
this
to listeners - Asynchronous vs. synchronous
- Handling events only once
- Error events
- Capture rejections of promises
- Class:
EventEmitter
- Event:
'newListener'
- Event:
'removeListener'
emitter.addListener(eventName, listener)
emitter.emit(eventName[, ...args])
emitter.eventNames()
emitter.getMaxListeners()
emitter.listenerCount(eventName)
emitter.listeners(eventName)
emitter.off(eventName, listener)
emitter.on(eventName, listener)
emitter.once(eventName, listener)
emitter.prependListener(eventName, listener)
emitter.prependOnceListener(eventName, listener)
emitter.removeAllListeners([eventName])
emitter.removeListener(eventName, listener)
emitter.setMaxListeners(n)
emitter.rawListeners(eventName)
emitter[Symbol.for('nodejs.rejection')](err, eventName[, ...args])
- Event:
events.defaultMaxListeners
events.errorMonitor
events.getEventListeners(emitterOrTarget, eventName)
events.once(emitter, name[, options])
events.captureRejections
events.captureRejectionSymbol
events.listenerCount(emitter, eventName)
events.on(emitter, eventName[, options])
events.setMaxListeners(n[, ...eventTargets])
- Class:
events.EventEmitterAsyncResource extends EventEmitter
EventTarget
andEvent
API- Node.js
EventTarget
vs. DOMEventTarget
NodeEventTarget
vs.EventEmitter
- Event listener
EventTarget
error handling- Class:
Event
event.bubbles
event.cancelBubble()
event.cancelable
event.composed
event.composedPath()
event.currentTarget
event.defaultPrevented
event.eventPhase
event.isTrusted
event.preventDefault()
event.returnValue
event.srcElement
event.stopImmediatePropagation()
event.stopPropagation()
event.target
event.timeStamp
event.type
- Class:
EventTarget
- Class:
CustomEvent
- Class:
NodeEventTarget
nodeEventTarget.addListener(type, listener[, options])
nodeEventTarget.eventNames()
nodeEventTarget.listenerCount(type)
nodeEventTarget.off(type, listener)
nodeEventTarget.on(type, listener[, options])
nodeEventTarget.once(type, listener[, options])
nodeEventTarget.removeAllListeners([type])
nodeEventTarget.removeListener(type, listener)
- Node.js
- Passing arguments and
- Events
-
► Index
- Assertion testing
- Asynchronous context tracking
- Async hooks
- Buffer
- C++ addons
- C/C++ addons with Node-API
- C++ embedder API
- Child processes
- Cluster
- Command-line options
- Console
- Corepack
- Crypto
- Debugger
- Deprecated APIs
- Diagnostics Channel
- DNS
- Domain
- Errors
- Events
- File system
- Globals
- HTTP
- HTTP/2
- HTTPS
- Inspector
- Internationalization
- Modules: CommonJS modules
- Modules: ECMAScript modules
- Modules:
node:module
API - Modules: Packages
- Net
- OS
- Path
- Performance hooks
- Permissions
- Process
- Punycode
- Query strings
- Readline
- REPL
- Report
- Stream
- String decoder
- Test runner
- Timers
- TLS/SSL
- Trace events
- TTY
- UDP/datagram
- URL
- Utilities
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- Worker threads
- Zlib
- ► Other versions
- ► Options
Table of contents
- Events
- Passing arguments and
this
to listeners - Asynchronous vs. synchronous
- Handling events only once
- Error events
- Capture rejections of promises
- Class:
EventEmitter
- Event:
'newListener'
- Event:
'removeListener'
emitter.addListener(eventName, listener)
emitter.emit(eventName[, ...args])
emitter.eventNames()
emitter.getMaxListeners()
emitter.listenerCount(eventName)
emitter.listeners(eventName)
emitter.off(eventName, listener)
emitter.on(eventName, listener)
emitter.once(eventName, listener)
emitter.prependListener(eventName, listener)
emitter.prependOnceListener(eventName, listener)
emitter.removeAllListeners([eventName])
emitter.removeListener(eventName, listener)
emitter.setMaxListeners(n)
emitter.rawListeners(eventName)
emitter[Symbol.for('nodejs.rejection')](err, eventName[, ...args])
- Event:
events.defaultMaxListeners
events.errorMonitor
events.getEventListeners(emitterOrTarget, eventName)
events.once(emitter, name[, options])
events.captureRejections
events.captureRejectionSymbol
events.listenerCount(emitter, eventName)
events.on(emitter, eventName[, options])
events.setMaxListeners(n[, ...eventTargets])
- Class:
events.EventEmitterAsyncResource extends EventEmitter
EventTarget
andEvent
API- Node.js
EventTarget
vs. DOMEventTarget
NodeEventTarget
vs.EventEmitter
- Event listener
EventTarget
error handling- Class:
Event
event.bubbles
event.cancelBubble()
event.cancelable
event.composed
event.composedPath()
event.currentTarget
event.defaultPrevented
event.eventPhase
event.isTrusted
event.preventDefault()
event.returnValue
event.srcElement
event.stopImmediatePropagation()
event.stopPropagation()
event.target
event.timeStamp
event.type
- Class:
EventTarget
- Class:
CustomEvent
- Class:
NodeEventTarget
nodeEventTarget.addListener(type, listener[, options])
nodeEventTarget.eventNames()
nodeEventTarget.listenerCount(type)
nodeEventTarget.off(type, listener)
nodeEventTarget.on(type, listener[, options])
nodeEventTarget.once(type, listener[, options])
nodeEventTarget.removeAllListeners([type])
nodeEventTarget.removeListener(type, listener)
- Node.js
- Passing arguments and
Events事件#
Source Code: lib/events.js
Much of the Node.js core API is built around an idiomatic asynchronous event-driven architecture in which certain kinds of objects (called "emitters") emit named events that cause Node.js核心API的大部分是围绕一个惯用的异步事件驱动架构构建的,在该架构中,某些类型的对象(称为“发射器”)会发出导致调用Function
objects ("listeners") to be called.Function
对象(“侦听器”)的命名事件。
For instance: a 例如:net.Server
object emits an event each time a peer connects to it; a fs.ReadStream
emits an event when the file is opened; a stream emits an event whenever data is available to be read.net.Server
对象在每次对等体连接到它时发出一个事件;fs.ReadStream
在文件打开时发出事件;每当数据可供读取时,流就会发出一个事件。
All objects that emit events are instances of the 所有发出事件的对象都是EventEmitter
class. EventEmitter
类的实例。These objects expose an 这些对象公开了一个eventEmitter.on()
function that allows one or more functions to be attached to named events emitted by the object. eventEmitter.on()
函数,该函数允许一个或多个函数附加到对象发出的命名事件。Typically, event names are camel-cased strings but any valid JavaScript property key can be used.通常,事件名称是骆驼大小写的字符串,但可以使用任何有效的JavaScript属性键。
When the 当EventEmitter
object emits an event, all of the functions attached to that specific event are called synchronously. EventEmitter
对象发出事件时,将同步调用附加到该特定事件的所有函数。Any values returned by the called listeners are ignored and discarded.被调用侦听器返回的任何值都将被忽略并丢弃。
The following example shows a simple 下面的示例显示了一个具有单个侦听器的简单EventEmitter
instance with a single listener. EventEmitter
实例。The eventEmitter.on()
method is used to register listeners, while the eventEmitter.emit()
method is used to trigger the event.eventEmitter.on()
方法用于注册侦听器,而eventEmitter.emit()
方法则用于触发事件。
import { EventEmitter } from 'node:events';
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('an event occurred!');
});
myEmitter.emit('event');
const EventEmitter = require('node:events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('an event occurred!');
});
myEmitter.emit('event');