我有以下rxjs可觀察到的鏈:爲了維護秩序,連接所有RxJS運營商?
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
的類型爲:ActivatedRoute
。
的問題是,我想重複使用以下物品觀察到:
route.params.map(params => params['userAccountToken'])
注意我是如何複製此觀察到:第一,以激活帳號,然後簽到用戶...
我想找到一種方法來重用令牌的值,但我不確定要使用哪個運算符。
調用的順序需要保留。 concatAll
在這裏適合嗎?
請參閱以下的另一種嘗試:
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']));
}
而且,我需要mergeMap
或switchMap
上route.param.map...
?
你有沒有看過文檔呢? - http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-concatAll – olsn
感謝您的鏈接。我的確看過這些文檔,但我不確定哪個運營商可以選擇我的用例。 – balteo
但是你可能還沒有嘗試過,對嗎?因爲'concatAll'是一個操作符而不是Observable-creator,所以'Observable.concatAll(...)'應該拋出一個錯誤'不是函數'。 – olsn