在 rxjs 中,如何设置发出单个值之前的最短时间?

In rxjs how can I set a minimal time before a single value is emitted?

我有一个 http 请求作为可观察对象,但同时我播放了一些需要 2 秒的动画。我希望动画在请求完成之前完成,但我希望请求在 2 秒后花费尽可能少的时间。因此,如果请求本身需要 1.5 秒,我希望值在 2 秒内发出,如果请求需要 3 秒,我希望值在 3 秒内发出。因此,

request.pipe(delay(2000))

不会这样做,因为它只会增加请求的时间。我的第一个解决方案是

forkJoin([request,timer(2000)]).pipe(val=>val[0])

但我希望有针对此行为的运算符,但我找不到。

对于您的情况,forkJoin 工作正常。有一个稍微灵活一些的解决方案。

您可以使用 combineLatest 以完全相同的方式完成此操作,而不依赖于您的请求是否完成。

combineLatest([
  request,
  timer(2000)
]).pipe(
  map(v => v[0])
)