我有以下场景:有一个名为"ContextProvider"的服务,它保存有关应用程序上下文的信息(登录用户、他可以访问的内容等(。现在我观察如下:
this.contextProvider.Context.subscribe(context => {
//Do Something
})
现在我有一个服务,也将是可观察的。我希望此服务观察上下文并返回可观察的。有了地图功能,这将很容易:
let observable = this.contextProvider.Context.pipe(map(context => {
let aux: number = somevar + someothervar;
return aux;
})) //observable variable now holds the type Observable<number>
我的场景有点复杂,因为为了获取结果,我必须进行Http调用,这也是一个可观察/承诺:
let observable = this.contextProvider.Context.pipe(map(context => {
return this.httpClient.get<number>("Some URL").pipe(take(1));
})); //observable var now holds Obsevable<Observable<number>>
如何使"可观测"var保持可观测?
编辑:URL值取决于"上下文"变量的一些值
如果我理解你的问题,你需要在这种情况下使用concatMap
,比如这个
this.contextProvider.Context.pipe(
concatMap(context => {
return this.httpClient.get<number>("Some URL" + context.someData);
}));
在本文中,您可以找到更多关于使用Observables和http调用的模式