一个 Observable 可以有多个订阅者吗?

问题描述 投票:0回答:1

我有一个 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);
      }
    });
javascript rxjs
1个回答
0
投票

是的,Observable 可以有多个订阅者。

它不会创建多个

Observable
,但会创建多个
Subscription
,这将多次执行同一个Observable。 https://rxjs.dev/guide/subscription

顺便说一句,如果你不想多次执行同一个 Observable,你可以使用

share
来避免这种情况。 https://rxjs.dev/api/operators/share

© www.soinside.com 2019 - 2024. All rights reserved.