我想在视觉效果消失后发出事件。视觉效果持续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)
...