如何在角度订阅后执行某些操作
问题描述:
我想返回一个布尔值,但“if”条件中的变量未定义。如何在角度订阅后执行某些操作
function(){
this.menuDataService.getMenu()
.subscribe(res =>{
this.mainMenus = res.MainMenus;
console.log(this.mainMenus);
});
console.log(this.mainMenus);
if(this.mainMenus == 1){
return true;
}
else{
return false;
}
}
答
你可以有终于结束了observable
事件,让subscription
接到电话。
this.menuDataService.getMenu()
.finally(() => { console.log(this.mainMenus) });
.subscribe(res =>{
this.mainMenus = res.MainMenus;
console.log(this.mainMenus);
});
答
一旦你开始使用observables,你必须在可观察对象的链式方法集内工作。在你的情况下,你可以这样做:
function InnerFunc(){
return this.menuDataService.getMenu()
.map(res => {
if(res.mainMenus == 1){
return true;
}
else{
return false;
}
)
}
function OuterFunc() {
InnerFunc()
.subscribe(result =>{
// will be either true or false
console.log(result);
});
}
为什么不在第一个console.log内'subscribe'后立即写入? – Dhyey