Subscribe 方法中的变量赋值不是在 subscribe 方法之外设置的
Assigning Value To Variable Within Subscribe Method is not set outside of the subscribe method
如何在订阅方法之外访问值
public ttl_count = 0;
ngOnInit() {
this.MacService.getAllCouseCount().subscribe((res)=> {
this.ttl_count = res['count']
});
}
每当我在订阅函数中 console.log(this.ttl_count)
时,我都会得到正确的结果,但每当我在订阅函数之外记录它时,我都会得到 0
这是一个已知问题。
这是因为 observable 和 subscribe 的所有行为都是异步的,因此它将在订阅之后立即具有值。所以函数应该在 sub 之后被触发。
public ttl_count=0;
ngOnInit()
{
this.MacService.getAllCouseCount().subscribe((res)=>
{
this.ttl_count=res['count']; // <-- just here it gets the value.
console.log(this.ttl_count); // <-- it has value, it happend after!
this.example();
});
console.log(this.ttl_count); // <-- no value, it happend before.
}
public example(): void
{
console.log(this.ttl_count); // <-- it has value here.
}
这是因为 this.MacService.getAllCouseCount().subscribe
方法是异步的并且 console.log(this.ttl_count)
外部订阅方法首先执行,直到您从 this.MacService.getAllCouseCount()
获得响应
您可以使用 async-await 或将此 this.MacService.getAllCouseCount()
转换为 promise。
如何在订阅方法之外访问值
public ttl_count = 0;
ngOnInit() {
this.MacService.getAllCouseCount().subscribe((res)=> {
this.ttl_count = res['count']
});
}
每当我在订阅函数中 console.log(this.ttl_count)
时,我都会得到正确的结果,但每当我在订阅函数之外记录它时,我都会得到 0
这是一个已知问题。 这是因为 observable 和 subscribe 的所有行为都是异步的,因此它将在订阅之后立即具有值。所以函数应该在 sub 之后被触发。
public ttl_count=0;
ngOnInit()
{
this.MacService.getAllCouseCount().subscribe((res)=>
{
this.ttl_count=res['count']; // <-- just here it gets the value.
console.log(this.ttl_count); // <-- it has value, it happend after!
this.example();
});
console.log(this.ttl_count); // <-- no value, it happend before.
}
public example(): void
{
console.log(this.ttl_count); // <-- it has value here.
}
这是因为 this.MacService.getAllCouseCount().subscribe
方法是异步的并且 console.log(this.ttl_count)
外部订阅方法首先执行,直到您从 this.MacService.getAllCouseCount()
您可以使用 async-await 或将此 this.MacService.getAllCouseCount()
转换为 promise。