使用RxJs 5角4RxJs:共享使用異步可觀察/等待
我想分享一個可觀察的,這樣我只能讓1個Http請求,我也希望讓我去等待來電當我請求它的結果。我有以下代碼:
export class DataService {
constructor(public http: HttpClient) {
this.getObservable();
}
public observable;
public getObservable() {
const url = "api/getData";
this.observable = this.http.get(`${this.baseUrl}${url}`).share()
}
public async hasData(data: DataEnum) {
const result = await this.observable.toPromise();
return result.filter(x => x === data).length > 0;
}
}
但是,許多調用hasData導致了許多調用我們的API端點。我假設我已將observable
設置爲共享的觀測值,當我打電話給.toPromise()
時,它只會獲取緩存的值並將其作爲承諾,我可以await
。
這是應該如何工作?
你爲什麼要這麼做?我們可以用更好的技術來幫助你? – Microsmsm
如果您已經使用承諾,是否有某些事情阻止您保存承諾?這將是非常簡單的。共享運營商無法按照您的預期工作。 – estus
@Microsmsm代碼被簡化了:)當應用程序加載時,我需要知道在哪裏指導用戶 - 因此需要等待結果。該數據還包含HTML模板中請求的其他一些信息,因此我們會收到很多電話,我想分享。 – user917170