我想在视觉效果消失后发出事件。视觉效果持续5秒钟。
这段代码有效,但我认为有更好的解决方案:

Observable.combineLatest(observable1, Observable.of('hold').delay(5000)).subscribe(() => {
    alert('ok');
});

当observable1被触发但不早于5秒时,应触发此事件。 (如果observable1在6秒后触发,则此事件应在6秒后触发。如果observable1在3秒后触发,则此事件应在5秒后触发)

最佳答案

您描述的内容看起来像需要 withLatestFrom ,它仅在源发出时才发出:

Observable
  .of('hold')
  .delay(5000)
  .withLatestFrom(observable1, (...values) => values[1])
  .subscribe(console.log);

仅延迟的'hold'字符串可控制此运算符何时从Observable1发出最新值。运算符不会发出任何东西,直到它的源和Observable1都发出为止,即使Observable1在eg之后发出。 6s您将在6s之后收到第一项。如果相反,并且Observable1发出较早,它将等待'hold'字符串。

如果您对Observable1中的值不感兴趣,则可以忽略投影函数并仅使用:
...
.withLatestFrom(observable1)
...

07-24 16:44