如果'this',RXJS Angular 2可观察到丢失航迹。
在RXJS和Angular 2中,当使用可观察对象时,有时会遇到'this'丢失航迹的问题。这通常是由于作用域问题引起的。
解决这个问题的一种常见方法是使用箭头函数。箭头函数绑定了当前上下文的'this',因此可以确保在可观察对象中使用正确的'this'。
例如,在Angular 2中,当在组件中使用可观察对象时,可以使用箭头函数来确保'this'的正确性:
import { Observable } from 'rxjs';
export class MyComponent {
myObservable: Observable<any>;
constructor() {
this.myObservable = new Observable(observer => {
// 在这里使用箭头函数确保'this'的正确性
setInterval(() => {
observer.next('数据更新');
}, 1000);
});
}
ngOnInit() {
this.myObservable.subscribe(data => {
console.log(data);
});
}
}
在上面的示例中,通过使用箭头函数,我们确保在可观察对象中使用的'this'引用的是组件实例。
此外,还可以使用bind方法来显式绑定'this'。例如:
import { Observable } from 'rxjs';
export class MyComponent {
myObservable: Observable<any>;
constructor() {
this.myObservable = new Observable(observer => {
setInterval(function() {
observer.next('数据更新');
}.bind(this), 1000);
});
}
ngOnInit() {
this.myObservable.subscribe(data => {
console.log(data);
});
}
}
在上面的示例中,通过使用bind方法将函数绑定到组件实例,我们可以确保在可观察对象中使用的'this'引用的是组件实例。
总结起来,为了解决'this'丢失航迹的问题,可以使用箭头函数或bind方法来确保在可观察对象中使用的'this'引用的是正确的上下文。
领取专属 10元无门槛券
手把手带您无忧上云