Wenn ich eine switchMap auf eine Observable anwende und das Ergebnis zurückgebe, erwarte ich, dass die Subskription dieses Ergebnisses nicht dazu führt, dass die Switch-Map erneut ausgeführt wird.switchMap ruft mehrmals die innere Funktion auf
Nehmen Sie den folgenden Code ein:
let myObservable = Observable.of('empty')
.switchMap(id => {
doWork();
return Observable.of('test');
}
);
myObservable.subscribe(x => console.log('subscription 1'));
myObservable.subscribe(x => console.log('subscription 2'));
function doWork() {
console.log('working!');
}
Es produziert:
working!
subscription 1
working!
subscription 2
Was Im suchen, ist die doWork Methode nur einmal aufgerufen werden und eine Ausgabe wie folgt aus:
working!
subscription 1
subscription 2
Weitere Ressourcen zur Antwort:
Danke Mark. Ich habe kalte und heiße Observablen untersucht, und ich glaube, dass ich in diesem Fall ein heißes Observable haben möchte. Ist share das selbe wie eine publish() und dann eine connect()? – cgatian
share() refcount und connect() wenn der erste Stream subskribiert wird. publish() lässt Sie alle Dinge abonnieren, bevor Sie connect() 'ing und beginnen, Upstream-Emissionen zu empfangen –
Ist diese Art von RxJs ein Antipattern? Soll ich nach alternativen Möglichkeiten suchen? – cgatian