forkJoin替代未完成的observable?

Mar*_*man 8 rxjs typescript angular

constructor(
    private route: ActivatedRoute,
    private http: Http
){
    // Observe parameter changes
    let paramObs = route.paramMap;

    // Fetch data once
    let dataObs = http.get('...');

    // Subscribe to both observables,
    // use both resolved values at the same level
}
Run Code Online (Sandbox Code Playgroud)

forkJoin每当发出参数更改时,是否存在类似于触发器的内容?forkJoin仅在所有可观测量完成后才有效.

我只需要避免回调地狱,任何符合的选择都是受欢迎的.

mar*_*tin 12

有几种选择:

  1. 使用take(1)forkJoin()完成每个源可观察到:

    forkJoin(o1$.take(1), o2$.take(1))
    
    Run Code Online (Sandbox Code Playgroud)
  2. 仅当所有源Observable发出相同数量的项时,才使用zip()take(1)发出:

    zip(o1$, o2$).take(1)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 用于combineLatest()在任何源Observable发出时发出:

    combineLatest(o1$, o2$)
    
    Run Code Online (Sandbox Code Playgroud)

2019年1月:更新了RxJS 6

  • o1$.take(1) 的实际语法是 o1$.pipe(first()) (3认同)