Bộ phát sự kiện nút

Cách làm việc với các sự kiện tùy chỉnh trong Node

Nếu bạn đã làm việc với JavaScript trong trình duyệt, bạn biết mức độ tương tác của người dùng được xử lý thông qua các sự kiện: nhấp chuột, nhấn nút bàn phím, phản ứng với chuyển động của chuột, v.v.

Về mặt phụ trợ, Node cung cấp cho chúng tôi tùy chọn để xây dựng một hệ thống tương tự bằng cách sử dụngeventsmô-đun.

Đặc biệt, mô-đun này cung cấpEventEmitterlớp mà chúng tôi sẽ sử dụng để xử lý các sự kiện của mình.

Bạn khởi tạo một đối tượng EventEmitter bằng cú pháp sau:

const EventEmitter = require('events')
const eventEmitter = new EventEmitter()

Đối tượng này cho thấy, trong số nhiều đối tượng khác,onemitcác phương pháp.

  • emitđược sử dụng để kích hoạt một sự kiện
  • onđược sử dụng để thêm một hàm gọi lại sẽ được thực thi khi sự kiện được kích hoạt

Phát ra và lắng nghe các sự kiện

Ví dụ: hãy tạo mộtstartvà đối với vấn đề cung cấp mẫu, chúng tôi phản ứng với điều đó bằng cách đăng nhập vào bảng điều khiển:

eventEmitter.on('start', () => {
  console.log('started')
})

Khi chúng tôi chạy

eventEmitter.emit('start')

chức năng xử lý sự kiện được kích hoạt và chúng tôi nhận được nhật ký bảng điều khiển.

addListener()là một bí danh choon(), trong trường hợp bạn thấy rằng đã sử dụng.

Chuyển đối số cho sự kiện

Bạn có thể chuyển các đối số cho trình xử lý sự kiện bằng cách chuyển chúng dưới dạng các đối số bổ sung choemit():

eventEmitter.on('start', (number) => {
  console.log(`started ${number}`)
})

eventEmitter.emit(‘start’, 23)

Nhiều đối số:

eventEmitter.on('start', (start, end) => {
  console.log(`started from ${start} to ${end}`)
})

eventEmitter.emit(‘start’, 1, 100)

Nghe một sự kiện chỉ một lần

Đối tượng EventEmitter cũng cho thấyonce()mà bạn có thể sử dụng để tạo trình nghe sự kiện một lần.

Một khi sự kiện đó được kích hoạt, người nghe sẽ ngừng lắng nghe.

Thí dụ:

eventEmitter.once('start', () => {
  console.log(`started!`)
})

eventEmitter.emit(‘start’) eventEmitter.emit(‘start’) //not going to fire

Xóa trình nghe sự kiện

Sau khi tạo trình nghe sự kiện, bạn có thể xóa nó bằng cách sử dụngremoveListener()phương pháp.

Để làm như vậy, trước tiên chúng ta phải có một tham chiếu đến hàm gọi lại củaon.

Trong ví dụ này:

eventEmitter.on('start', () => {
  console.log('started')
})

Trích xuất cuộc gọi lại:

const callback = () => {
  console.log('started')
}

eventEmitter.on(‘start’, callback)

Để sau này bạn có thể gọi

eventEmitter.removeListener('start', callback)

Bạn cũng có thể xóa tất cả người nghe cùng một lúc trên một sự kiện, bằng cách sử dụng:

eventEmitter.removeAllListeners('start')

Đăng ký các sự kiện

CáceventNames()phương thức, được gọi trên một cá thể đối tượng EventEmitter, trả về một mảng các chuỗi đại diện cho các sự kiện được đăng ký trên EventListener hiện tại:

const EventEmitter = require('events')
const eventEmitter = new EventEmitter()

eventEmitter.on(‘start’, () => { console.log(‘started’) })

eventEmitter.eventNames() // [ ‘start’ ]

listenerCount()trả về số lượng người nghe của sự kiện được truyền dưới dạng tham số:

eventEmitter.listenerCount('start') //1

Thêm nhiều người nghe trước / sau những người khác

Nếu bạn có nhiều người nghe, thứ tự của họ có thể quan trọng.

Một cá thể đối tượng EventEmitter cung cấp một số phương thức để làm việc với thứ tự.

emitter.prependListener()

Khi bạn thêm người nghe bằng cách sử dụngonhoặc làaddListener, nó được thêm vào cuối cùng trong hàng đợi của người nghe và được gọi là cuối cùng. Sử dụngprependListenernó được thêm vào và được gọi trước những người nghe khác.

emitter.prependOnceListener()

Khi bạn thêm người nghe bằng cách sử dụngonce, nó được thêm vào cuối cùng trong hàng đợi của người nghe và được gọi là cuối cùng. Sử dụngprependOnceListenernó được thêm vào và được gọi trước những người nghe khác.

Tải xuống miễn phí của tôiSổ tay Node.js


Các hướng dẫn nút khác: