Rxjs 使Http请求观察并返回anm Observable和结果

Rxjs 使Http请求观察并返回anm Observable和结果,rxjs,Rxjs,我有以下场景:有一个名为“ContextProvider”的服务,它保存有关应用程序上下文的信息(登录用户、他可以访问的内容等)。现在我观察到如下情况: this.contextProvider.Context.subscribe(context => { //Do Something }) 现在我有一个服务,也将是可观察的。我希望此服务观察上下文并返回一个可观察的。使用映射功能,这将很容易: let observable = this.contextProvider.Conte

我有以下场景:有一个名为“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>
let observable=this.contextProvider.Context.pipe(map(Context=>{
设aux:number=somevar+someothervar;
返回aux;
}))//observable变量现在保存observable类型
我的场景有点复杂,因为为了获取结果,我必须进行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>>
let observable=this.contextProvider.Context.pipe(map(Context=>{
返回这个.httpClient.get(“某些URL”).pipe(take(1));
})); //可观测var现在保持可观测
如何使“可观察”var保持可观察


编辑:URL值取决于“context”变量的某些值

如果我正确理解您的问题,您需要在这种情况下使用
concatMap
,如下所示

this.contextProvider.Context.pipe(
  concatMap(context => {
    return this.httpClient.get<number>("Some URL" + context.someData);
}));
this.contextProvider.Context.pipe(
concatMap(上下文=>{
返回this.httpClient.get(“someurl”+context.someData);
}));

您可以在

中找到更多有关使用http调用的可观察对象的模式,谢谢!我会试试看。我刚才尝试了flatMap,它似乎很管用,但我肯定会研究它。
flatMap
(又称
mergeMap
)和
switchMap
在这种情况下会管用,但最好的选择通常是
concatMap