我有一个 Observable,我认为一个 Observable 只能有一个订阅者。但是下面的代码订阅了两次并且对于两个订阅者来说工作正常 - 为什么呢? (我的意思是
received0
和received1
都打印出来了)
const observable = new Observable((subscriber) => {
sub : Subscriber;
setTimeout(() => {
subscriber.next(4);
subscriber.complete();
}, 2000);
});
observable.subscribe({
next: (value) => {
console.log("received0: "+value);
}
});
observable.subscribe({
next: (value) => {
console.log("received1: "+value);
}
});
是的,Observable 可以有多个订阅者。
它不会创建多个
Observable
,但会创建多个Subscription
,这将多次执行同一个Observable。
https://rxjs.dev/guide/subscription
顺便说一句,如果你不想多次执行同一个 Observable,你可以使用
share
来避免这种情况。
https://rxjs.dev/api/operators/share