Rxjs 使用管道和地图获取可观测结果
我试图在按钮上设置一个可观察对象,并将其链接到一个返回可观察对象的服务Rxjs 使用管道和地图获取可观测结果,rxjs,Rxjs,我试图在按钮上设置一个可观察对象,并将其链接到一个返回可观察对象的服务 sydneyHttp$ = new Observable<string>(); this.sydneyHttp$ = fromEvent(this.sydneyServerButton, 'click') .pipe( map(() => this.streamService.getStream(1) ) ); sydneyHttp$=newobservable(
sydneyHttp$ = new Observable<string>();
this.sydneyHttp$ = fromEvent(this.sydneyServerButton, 'click')
.pipe(
map(() => this.streamService.getStream(1) )
);
sydneyHttp$=newobservable();
this.sydneyHttp$=fromEvent(this.sydneyServerButton,'单击')
.烟斗(
map(()=>this.streamService.getStream(1))
);
我得到这个错误,可观察的被包装在一个可观察的:
Type 'Observable<Observable<string>>' is not assignable to type 'Observable<string>'.
类型“Observable”不可分配给类型“Observable”。
我想在
flatMap
或forkMap
中使用它,再请求一次单击。更改为mergeMap将解决此问题
sydneyHttp$ = new Observable<string>();
this.sydneyHttp$ = fromEvent(this.sydneyServerButton, 'click')
.pipe(
mergeMap(() => this.streamService.getStream(1) )
);
sydneyHttp$=newobservable();
this.sydneyHttp$=fromEvent(this.sydneyServerButton,'单击')
.烟斗(
mergeMap(()=>this.streamService.getStream(1))
);
或者可能是switchMap
,我想在这种情况下可能更好,但可能很难知道。@听起来你知道map
和flatMap
是不同的操作吗。这同样适用于map
和switchMap
/mergeMap
。如果调用map
并为每个项目返回一个数组,则从一个项目数组转到一个数组。如果调用flatMap
并从每个项目返回一个数组,则仍然有一个项目数组。类似地,如果调用map
并返回一个可观察对象,则从项目的可观察对象转到可观察对象的可观察对象。map将按原样返回值,而不会展开/执行可观察-this.streamService.getStream(1)