我尝试通过Angular 2 Observable subscribe方法的例子来理解typescript的箭头函数.有人可以解释我:
我有这个代码有效:
this.readdataservice.getPost().subscribe( posts => { this.posts = posts; } );
但如果我使用它,它应该是一样的吗?但这不起作用.
this.readdataservice.getPost().subscribe( function (posts) { this.posts = posts; } );
解决方法
默认情况下,JS执行调用者范围内的函数.如果你传递一个函数来在其他地方调用,这指向调用者.
在您的代码中,您通过subscribe(…)方法将函数传递给observable,然后在发出事件时由observable调用该函数.
在您的代码中,您通过subscribe(…)方法将函数传递给observable,然后在发出事件时由observable调用该函数.
如果使用箭头函数,则会一直指向定义它的类.
另一种方法是使用.bind(this)来告诉JS这应该继续指向当前的类实例.
this.readdataservice.getPost().subscribe( function (posts) { this.posts = posts; }.bind(this) );
另见https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions/Arrow_functions