我对Rxjs有点困惑。 我正在尝试使用可观察的计时器。
下面是链接
https://jsfiddle.net/vpx0y8fu/375/
考虑下面的代码片段,我将消息作为源,该消息在1秒后发出值。我使用了delayWhen运算符,它延迟了源发出的每个值。但是,当我订阅延迟的可观测对象时,它仅具有初始延迟,即在第一个值发出之后,每个值都以1秒的间隔发出。
//emit value every second
const message = Rx.Observable.interval(1000);
//emit value after five seconds
//after 5 seconds, start emitting delayed values
const delayWhenExample = message.delayWhen(() =>
Rx.Observable.interval(4000));
//log values, delayed for 5 seconds
//ex. output: 5s....1...2...3
const subscribe = delayWhenExample.subscribe(val =>
console.log(val));
但是当我使用下面的代码片段
//emit value on click
const message1 = Rx.Observable.fromEvent(document, 'click');
//emit value after five seconds
//after 5 seconds, start emitting delayed values
const delayWhenExample1 = message1.delayWhen(() => Rx.Observable.interval(4000));
//log values, delayed for 5 seconds
//ex. output: 5s....1...2...3
const subscribe1 = delayWhenExample1.subscribe(val => console.log(val));
每次点击都会延迟4秒。
谁能指出我无法理解的区别?
在上述示例的每个源可观察对象中,值发出时,它应延迟4秒,但在第一个示例中不会发生,而第二个示例按预期进行。
请为我建议使用上述实现的计时器实现,因为我不想进行时间计算。