Je suis confronté à un comportement aléatoire avec l'opérateur flatMap et je ne trouve pas la raison pour laquelle. Parfois, il se déclenche, parfois il ne le fait pas ...Observables: flatMap non déclenché aléatoirement
Voici la situation: L'utilisateur peut changer la langue dans mon application, donc j'ai un BehaviorSubject sur la langue (qui est déclenchée par une liste de sélection) retourné comme observable par son fournisseur. Quand il y a une modification, j'appelle (via flatMap) une requête http pour récupérer les données dans la langue sélectionnée.
Il ressemble à ceci:
this.languageProvider.getLang$().flatMap(langCode => {
return this.http.get(`https://SERVER_URL.net/datas?lang=${langCode}`)
.map(data => data.json())
})
.subscribe(
data => {
// do smth
},
err => {
// do smth
}
);
La chose est, quand je change la langue de l'appel http est le plus souvent pas déclenché.
Si j'ajouter d'un simple travail toujours y souscrire ...
this.languageProvider.getLang$().subscribe(langCode => {
console.log(langCode);
});
Toute idée pourquoi j'ai cette question?
Voici le languageProvider:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class LanguageProvider {
private lang$: BehaviorSubject<string>;
constructor() {
this.lang$ = new BehaviorSubject('en');
}
setLang(langCode: string) {
this.lang$.next(langCode);
}
getLang$(): Observable<string> {
return this.lang$.asObservable();
}
}
Merci beaucoup