【发布时间】:2020-05-29 06:04:47
【问题描述】:
我有以下最小示例来演示我所面临的问题,其中episode 是从 UI 提供的一个值,getEpisodeTitleFromApi 是一个长时间运行的可观察对象,它会发出一个字符串。
在episode 为null 或大于6 的情况下,result$ 立即发出一个空字符串来处理无效或空输入。
loading$ 的意图应该很清楚了。
episode = new Subject<number>();
result$ = this.episode.pipe(
switchMap(episode => !episode || episode > 6 ? of('') : getEpisodeTitleFromApi(episode)),
share()
);
loading$ = merge(
this.result$.pipe(mapTo(false)),
this.episode.pipe(mapTo(true))
);
问题是,当episode 为 null 或大于 6 并立即发出时,loading$ 发出 false 然后发出 true。
如何连接loading$ observable 以正确的顺序发射或达到预期的结果?
【问题讨论】: