我如何在 RxJS 中创建冷主题?
How could I create Cold Subject in RxJS?
默认情况下 RxJs Subject 是“Hot”,但是是否可以创建"Cold" Subject 要获取从一开始传播的所有值吗?
即:
let s = new Subject();
s.next(1);
s.next(2);
s.subscribe(n => console.log(n)); //to get here 1 2 3
s.next(3);
ReplaySubject
的行为与您描述的完全一样。有关详细信息,请参阅 ReactiveX Subject docs。
您可以使用 ReplaySubject 来执行此操作。要记住的一件事是 ReplaySubject 在创建期间需要一个数字来知道它应该缓冲多少个值。您不能缓冲所有元素。
const subject = new Rx.ReplaySubject(10);
subject.next("1");
subject.next("2");
subject.next("3");
subject.next("4");
subject.next("5");
subject.subscribe(
(val) => console.log(val)
);
subject.next("6");
// Logs out
// 1
// 2
// 3
// 4
// 5
// 6
默认情况下 RxJs Subject 是“Hot”,但是是否可以创建"Cold" Subject 要获取从一开始传播的所有值吗?
即:
let s = new Subject();
s.next(1);
s.next(2);
s.subscribe(n => console.log(n)); //to get here 1 2 3
s.next(3);
ReplaySubject
的行为与您描述的完全一样。有关详细信息,请参阅 ReactiveX Subject docs。
您可以使用 ReplaySubject 来执行此操作。要记住的一件事是 ReplaySubject 在创建期间需要一个数字来知道它应该缓冲多少个值。您不能缓冲所有元素。
const subject = new Rx.ReplaySubject(10);
subject.next("1");
subject.next("2");
subject.next("3");
subject.next("4");
subject.next("5");
subject.subscribe(
(val) => console.log(val)
);
subject.next("6");
// Logs out
// 1
// 2
// 3
// 4
// 5
// 6