It is not good to cache all the value by using ReplaySubject, so we need to add cache logic for this.
The first parameter to the constructor of ReplaySubject takes a number that represents how many values we want to buffer:
var subject = new Rx.ReplaySubject(2); // Buffer size of 2 subject.onNext(1); subject.onNext(2); subject.onNext(3); subject.subscribe(function(n) { console.log(‘Received value:‘, n); }); /* "Received value:" 3 "Received value:" 2 */
The second parameter takes a number that represents the time in miliseconds during which we want to buffer values:
var subject = new Rx.ReplaySubject(null, 200); // Buffer size of 200ms setTimeout(function() { subject.onNext(1); }, 100); //100+200 < 300 setTimeout(function() { subject.onNext(2); }, 200); //200+200 > 350 setTimeout(function() { subject.onNext(3); }, 300); //300+200 > 350 setTimeout(function() { subject.subscribe(function(n) { console.log(‘Received value:‘, n); }); subject.onNext(4); }, 350); /* "Received value:" 2 "Received value:" 3 "Received value:" 4 */
时间: 2024-10-17 15:50:16