我面臨着flatMap運算符的隨機行爲,我無法找到原因。有時它觸發,有時它不...Observables:flatMap隨機未觸發
這是的情況: 用戶可以更改我的應用程序中的語言,所以我有一個行爲子語言(由選擇列表觸發)返回作爲它的提供者可以觀察到的。當有變化時,我會調用(通過flatMap)一個http請求來獲取所選語言的數據。
它看起來像這樣:
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
}
);
的事情是,當我改變了語言HTTP調用是最經常不會被觸發。
如果我添加一個簡單的訂閱它總是工作...
this.languageProvider.getLang$().subscribe(langCode => {
console.log(langCode);
});
任何想法,爲什麼我有這個問題?
這裏是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();
}
}
非常感謝