En lugar de utilizar publishBehavior para crear un ConnectableObservable, se puede utilizar connectable con un BehaviorSubject.
import { timer, publishBehavior, ConnectableObservable } from 'rxjs';
// Obsoleto
const tick$ = timer(1_000).pipe(
publishBehavior(0)
) as ConnectableObservable<number>;
import { connectable, timer, BehaviorSubject } from 'rxjs';
// Sugerencia de refactorización
const tick$ = connectable(timer(1_000), {
connector: () => new BehaviorSubject(0),
resetOnDisconnect: false
});
Si al resultado de publishBehavior se le aplica refCount, se puede utilizar el operador share - junto a un conector BehaviorSubject - para reemplazar ambos.
import { timer, share, AsyncSubject } from 'rxjs';
// Sugerencia de refactorización
const tick$ = timer(1_000).pipe(
share({
connector: () => new AsyncSubject(),
resetOnError: false,
resetOnComplete: false,
resetOnRefCountZero: false
})
);
publishReplay
En lugar de utilizar publishReplay para crear un ConnectableObservable, se puede utilizar connectable junto a un ReplaySubject.
import { timer, publishReplay, ConnectableObservable } from 'rxjs';
// Obsoleto
const tick$ = timer(1_000).pipe(
publishReplay(1)
) as ConnectableObservable<number>;
import { connectable, timer, ReplaySubject } from 'rxjs';
// Sugerencia de refactorización
const tick$ = connectable(timer(1_000), {
connector: () => new ReplaySubject<number>(1),
resetOnDisconnect: false
});
Si al resultado de publishReplay se le aplica refCount, se puede utilizar el operador share - junto a un conector ReplaySubject - para reemplazar ambos.
import { timer, connect, combineLatest, ReplaySubject } from 'rxjs';
// Sugerencia de refactorización
const tick$ = timer(1_000).pipe(
connect((source) => combineLatest([source, source]), {
connector: () => new ReplaySubject(1)
})
);
refCount
En lugar de aplicar el operador refCount al ConnectableObservable obtenido de un operador multicast o publish, se puede utilizar el operador share para reemplazarlos a ambos.
Las propiedades que se le pasen a share dependerán d elos operadores que estén siendo reemplazados. Las propuestas de refactorización para utilizar refCount con multicast, publish, publishBehavior, publishLast y publishReplay están detalladas arriba.