我试图简化问题并最小化下面的代码。试图实现的是在http安装完成时调用回调函数。正在调用回调方法,但this
变量及其绑定变量无法访问,因为在完成asyn加载时this
未定义。
load(callBackFn)this.http.get(this.sourceAddress).subscribe(
op =>{
if(callbackFn)
{
callBackFn();
}
}
this.load(function()
{
//**THIS IS NULL HERE ? BUT ACTUALLY this.uniqueId is set**
$('#' + this.uniqueId).css("display", "block");
})
答案 0 :(得分:0)
不确定为什么你会这样做,看起来有点混乱回调函数,你可以在订阅后访问你需要的任何类成员,但我想你必须绑定你想要的这个回调:
export class SomeComponent
{
private sourceAddress = 'some/url';
private uniqueId = 'spam';
constructor(private http: Http)
{
}
ngOnInit()
{
this.load(this.loadSuccess).bind(this);
}
load(callBackFn)
{
this.http
.get(this.sourceAddress)
.subscribe(
response =>
{
if (callBackFn)
{
callBackFn();
}
this.loadSuccess() //or just call it directly with no callback
},
error =>
{
console.log(error)
});
}
loadSuccess()
{
$('#' + this.uniqueId).css("display", "block");
}
}