Идеальным решением для случаев, когда вы хотите объединить несколько наблюдаемых, является оператор switchMap
.
this.route.paramMap
.pipe(
switchMap(params) => {
globalVar = + params['userId'];
return this.<someService>.doSomething()
})
.subscribe(result=> {this.func1();})
То, что сделает switchMap
, это то, что после получения параметров от this.route
он вернет новую наблюдаемую, на которую вы можете позднее подписаться. Преимущество использования switchMap
в этом случае состоит в том, что если в this.route.paramMap
во время обработки this.<someService>.doSomething()
есть изменения, rx js завершит обработку обрабатываемого запроса и запустит новый, сделав так дата в результат внутри subscribe
всегда будет иметь отношение к текущему значению paramMap
.