Je veux renvoyer une valeur booléenne, mais la variable dans la condition "if" n'est pas définie.
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;
}
}
Une fois que vous commencez à utiliser des observables, vous devez travailler avec l'ensemble des méthodes enchaînées de l'observable. Dans votre cas, vous pourriez faire quelque chose comme ça:
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);
});
}
Vous auriez enfin pu finir événement observable
, de sorte que subscription
soit appelé.
this.menuDataService.getMenu()
.finally( () => { console.log(this.mainMenus) });
.subscribe(res =>{
this.mainMenus = res.MainMenus;
console.log(this.mainMenus);
});
la réponse de seescode m'a aidée mais je ne peux pas la commenter.
Je voulais juste dire qu'avec RxJS 6, la méthode d'enchaînement des opérateurs observables a changé et nous devons maintenant utiliser la méthode pipe (...). (voir RxJS 6 - Qu'est-ce qui a changé? Quoi de neuf? )
Voici à quoi ressemblerait son InnerFunc mis à jour vers RxJS 6:
function InnerFunc(){
return this.menuDataService.getMenu().pipe(
map(res => {
if(res.mainMenus == 1){
return true;
}
else{
return false;
}
)
)
}