Работает, но синхронно, в вашем примере:
// 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)
(или какое-либо другое асинхронное поведение), вы «задержите» подписку и получите общий of
.
https://stackblitz.com/edit/typescript-xcwyew?file=index.ts