Rx:强制观察至少需要N秒才能完成

Per*_*ror 3 rxjs rx-java reactivex

我正在为我的应用制作启动画面。我希望它至少持续N秒,然后才能转到主屏幕。

我有一个Rx变量myObservable,它从服务器或本地缓存中返回数据。如何强制myObservable在完成至少N秒

myObservable
// .doStuff to make it last at least N seconds
   .subscribe(...)
Run Code Online (Sandbox Code Playgroud)

mar*_*tin 5

您可以forkJoin用来等待两个Observable完成:

Observable.forkJoin(myObservable, Observable.timer(N), data => data)
  .subscribe(...);
Run Code Online (Sandbox Code Playgroud)

对于不具有不建议使用的结果选择器功能的RxJS 6:

forkJoin(myObservable, Observable.timer(N)).pipe(
  map(([data]) => data),
)
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)

编辑:如注释中所述,Observable.timer(N)仅一项参数将在发出一项后完成,因此无需使用take(1)