【发布时间】:2019-08-16 12:49:30
【问题描述】:
我有一个映射可观察对象的主题,我订阅了 concatMap 中的可观察对象,但它不会从订阅中触发 tap()。
this.streamA$ = this.streamService.getStream(1)
.pipe(
tap(data => console.log('stream data:', data))
);
主题
this.images$ = this.queue.pipe(concatMap((event: Observable<string>) => {
// when an event arrives here it is still wrapped in observable
// subscribe isn't triggering tap()
event.subscribe(data => {
//console.log('inner observable subscription:', data);
});
// observable goes to the image$ observable, it is unwrapped by: image$ | async in template
return event;
}));
服务功能
getStream(time: number): Observable<string> {
let timer$ = timer(2000);
console.log('get stream');
const observable = new Observable<string>(observer => {
timer$.pipe(
map(() => {
observer.next('http response 1');
observer.complete();
})
).subscribe();
});
return observable;
}
更新:
event.subscribe(data => {
//console.log('inner observable subscription:', data);
});
订阅中不包含console.log,这是输出:
stream data: http response 1
使用console.log,同时打印这3行:
stream data: http response 1
inner observable subscription: http response 1
stream data: http response 1
【问题讨论】:
标签: rxjs