在NodeJS中使用类函数作为事件侦听器

Using a class function as an event listener in NodeJS

本文关键字:事件 侦听器 类函数 NodeJS      更新时间:2023-09-26

我有以下代码:

context
    .on( 'hangup', this.handleHangup );

在类构造函数和中

PlayMessage.prototype.handleHangup = function() {
    log.callout.info( "Call [%s]: Client hungup.", this.row.get( 'id' ) );
    this.endCall(); // Get out of here
}

作为类的函数。该类名为PlayMessage。

我得到一个错误说:

events.js:130throw TypeError("listener必须是函数");

谈到上下文。在我粘贴在上面的(…)行。

我应该如何使用类函数作为监听器?

一般来说,当将函数传递给依赖绑定上下文(this)的事件处理程序(如原型方法)时,必须手动绑定上下文才能传递。

context
    .on( 'hangup', this.handleHangup.bind(this) );

这样可以确保handleHangup中的this值是您期望的"类"的实例。

关于Function方法的更多信息.bind()

问题是我试图声明一个没有"new"的类,所以没有原型函数存在。这对我来说是一次奇妙的学习经历。