rxjs6 'share()' 不适用于 'of(...)'?

rxjs6 'share()' does not work with 'of(...)'?

为什么使用 of(...) 创建的 observable 不在多个订阅者之间共享源? timer(...)Observable.create(...) 按预期工作。我在文档中找不到任何提及。

https://stackblitz.com/edit/typescript-cygjdt?file=index.ts&devtoolsheight=100

它有效,但它是同步的,因此在您的示例中:

// of
const ofSource = of('hi');
const ofExample = ofSource.pipe(
  tap(() => console.log('***SIDE EFFECT - OF***'))
);

const ofSharedExample = ofExample.pipe(share());

ofSharedExample.subscribe(() => console.log('of sub 1'));
ofSharedExample.subscribe(() => console.log('of sub 2'));

第一个订阅在第二个订阅之前完成。因此 share 将取消订阅底层的可观察对象,因为没有其他订阅者 共享可观察对象。

但是,如果您添加 observeOn(asyncScheduler)(或其他一些异步行为),您将 'delay' 订阅并获得共享 of

https://stackblitz.com/edit/typescript-xcwyew?file=index.ts