将内部类函数变量分配给类变量

时间:2018-08-16 11:18:04

标签: angular function websocket

我下面的类分级变量

8080

在我的protected _sliderValue: number = 50; 中,我正在连接到Websocket服务器。连接已建立,并且我正在从服务器接收消息,可以登录到控制台。

ngOnInit

现在我的问题是,如何在websocket连接的const connection = new WebSocket('ws://localhost:9999/webSocket'); connection.onmessage = function (e){ console.log('Server: ' + e.data); }; 事件中将类变量_sliderValue分配给收到的e.data?预先感谢。

2 个答案:

答案 0 :(得分:1)

如果您指的是范围问题,请使用打字稿箭头功能来维护“ this”的正确范围或实例

private void TimerCallback(int x)
{
    var y = ReturnInt(x);
    Console.WriteLine("Value:" + y);
    GC.Collect();
}

更多信息可以在这里找到 https://basarat.gitbooks.io/typescript/docs/arrow-functions.html

答案 1 :(得分:0)

两种可能性:

第一所学校(旧学校):声明

const connection = new WebSocket('ws://localhost:9999/webSocket');

let that = this;
connection.onmessage = function (e){
console.log('Server: ' + e.data);
  that._sliderValue = e.data;
};

之所以可行,是因为that是对this的引用,尽管this是其他东西,但是在函数内部仍然可以访问。

第二(现代):使用箭头功能

const connection = new WebSocket('ws://localhost:9999/webSocket');
connection.onmessage = (e) => {
  console.log('Server: ' + e.data);
  that._sliderValue = e.data;
};

箭头函数不创建自己的作用域,而是使用与其父函数相同的作用域。因此,您仍然可以访问this。有关更多信息,请参见this