使用带有socket.io的箭头函数

时间:2017-01-04 19:50:10

标签: javascript typescript

我想知道如何使用箭头函数来替换bind。根据我的理解,我可以使用箭头函数在函数中词法调用this,但函数甚至不再被调用。

奇怪的是我没有得到任何错误,如果我使用箭头功能它就会无声地失败。

constructor(socket: SocketIO.Socket
{
    // Works
    socket.on(this.onLogin.name, this.onLogin.bind(this));

    // Doesn't work?
    socket.on(this.onLogin.name, (data: LoginDetails) => this.onLogin);
}


public onLogin(loginDetails: LoginDetails) {
    console.log(this.onLogin.name + " " + this.socketID);
}

1 个答案:

答案 0 :(得分:6)

你必须在箭头功能中调用该函数。

socket.on(this.onLogin.name, (data: LoginDetails) => this.onLogin(data));