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
。
为什么使用 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
。