当我尝试合并observbles时,我收到错误 You provided 'undefined' where a stream was expected.
.
我在这里创建我的刷新observable:
refresh$: Observable<Funnel[]>;
然后我有一个计时器......
TimerObservable.create(0, (this.storageService.refRate * 1000))
.takeWhile(() => this.interval)
.subscribe(() => {
this.refresh$ = this.funnelService.getStoryFunnels({}).map(response => [...response]);
});
然后当我尝试合并observable时,会产生错误:
this.funnels$ = this.funnelService.getStoryFunnels({}).pipe(
merge(this.refresh$, funnelCreation$.pipe(
filter(funnel => !!funnel),
map(funnel => [funnel])
)
)
);
根据舒适的答案更新:
this.refresh$ = TimerObservable.create(0, (this.storageService.refRate * 500))
.takeWhile(() => this.interval)
.switchMap(() => this.funnelService.getStoryFunnels({}).map(response => [...response]));
然后:
this.funnels$ = this.funnelService.getStoryFunnels({}).pipe(
merge(this.refresh$, funnelCreation$.pipe(
filter(funnel => !!funnel),
map(funnel => [funnel])
)
)
);
1 回答
这是因为
this.funnels$
isn't an observable yet 在声明它时(不是用任何值启动),因为它只会在执行定时器后才被赋值 . 然而,声明代码几乎立即执行(同步) . 这就是为什么你得到undefined
.你应该做的是你可以使用
switchMap
并将你的this.refresh$
指定给它: