ブール値を返したいのですが、「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;
}
}
オブザーバブルの使用を開始したら、オブザーバブルの一連の一連のメソッド内で作業する必要があります。あなたの場合、次のようなことができます:
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);
});
}
seescodeの答えは私を助けましたが、コメントすることはできません。
RxJS 6では、Observableオペレーターをチェーンする方法が変わったと言いたかったので、今度はpipe(...)メソッドを使用する必要があります。 ( RxJS 6-変更点?新機能? を参照)
RxJS 6に更新された彼のInnerFuncは次のようになります。
function InnerFunc(){
return this.menuDataService.getMenu().pipe(
map(res => {
if(res.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);
});