Ich habe folgende rxjs beobachtbaren Kette:Ist concatAll der richtige RxJS-Operator, um die Ordnung zu erhalten?
ngOnInit() {
this.route.params.map(params => params['userAccountToken'])
.switchMap(userAccountToken => this.userAccountService.activateAccount(userAccountToken))
.switchMap(() => this.route.params.map(params => params['userAccountToken']))
.switchMap(userAccountToken => this.signinService.signinByUserAccountToken(userAccountToken))
.subscribe(() => this.router.navigate(['/dashboard']));
}
FYI, route
vom Typ: ActivatedRoute
.
Das Problem ist, dass ich versuche, die folgende beobachtbaren wiederzuverwenden:
route.params.map(params => params['userAccountToken'])
Beachten Sie, wie ich dieses beobachtbaren duplizieren: zuerst, um das Konto zu aktivieren und dann den Benutzer signin ...
Ich versuche einen Weg zu finden, den Wert des Tokens wiederzuverwenden, aber ich bin mir nicht sicher, welcher Operator verwendet werden soll.
Die Reihenfolge der Aufrufe muss beibehalten werden. Ist concatAll
hier angebracht?
Siehe unten für einen weiteren Versuch:
ngOnInit() {
this.route.params.map(params => params['userAccountToken'])
.mergeMap(userAccountToken => Observable.concatAll(
this.userAccountService.activateAccount(userAccountToken),
this.sessionService.signinByUserAccountToken(userAccountToken)
))
.subscribe(() => this.router.navigate(['/dashboard']));
}
Auch muss ich mergeMap
oder switchMap
auf dem route.param.map...
?
Haben Sie sich die Dokumentation schon angesehen? - http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-concatAll – olsn
Danke für den Link. Ich habe mir zwar die Dokumente angeschaut, bin aber unsicher, welchen Betreiber ich bei meinem Anwendungsfall wählen soll. – balteo
Aber Sie haben es wahrscheinlich noch nicht ausprobiert, richtig? Da 'concatAll' ein Operator und kein Observable-Creator ist, sollte' Observable.concatAll (...) 'den Fehler' is not a function' ausgeben. – olsn