socket.io匿名回调:无法调用类函数

时间:2018-09-16 10:14:10

标签: node.js socket.io anonymous

所以,我有以下代码:

class Server {
  dataHandler(d) {
    console.log(d);
  }
  init() {
    io.on('connection', function(socket) {
      socket.on('data', this.dataHandler(d); //<-- TypeError: this.dataHandler is not a function
    });
  }
}

我想处理数据套接字的数据,但是如何才能转义匿名函数环境并访问this.dataHandler()?即使我调用dataHandler()或instance.dataHandler()(存储服务器的对象),也找不到该函数。

有人可以向我解释吗?

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为错误地使用了this

您应该使用箭头函数来保留this上下文:

class Server {
  dataHandler(d) {
    console.log(d);
  }
  init() {
    io.on('connection', (socket) => {
      socket.on('data', this.dataHandler(d));
    });
  }
}