J'essaie d'utiliser un observable rxjs pour déléguer, mais partager, un travail coûteux pendant toute la durée de vie d'une application.
Essentiellement, quelque chose comme :
var work$ = Observable.create((o) => {
const expensive = doSomethingExpensive();
o.next(expensive);
observer.complete();
})
.publishReplay(1)
.refCount();
Cela fonctionne bien et fait exactement ce que je veux, à l'exception d'une chose : si tous les abonnés se désabonnent, lorsque le suivant s'abonne, mon travail coûteux recommence. Je veux le conserver.
maintenant, je pourrais utiliser un sujet, ou je pourrais supprimer le refCount() et utiliser connect manuellement (et ne jamais me déconnecter). Mais cela ferait en sorte que le travail coûteux se produise au moment où je me connecte, et non la première fois qu'un abonné essaie de consommer work$.
Essentiellement, je veux quelque chose de semblable à refCount qui ne regarde que le premier abonnement à se connecter, et ne se déconnecte jamais. Un "lazy connect".
Une telle chose est-elle possible ?