结合2个Observables rxjs

时间:2017-09-22 06:14:37

标签: rxjs observable

如何在下一个使用2个组合Observable的返回值?

我需要在创建地图之前先获取设置和当前位置。

let trackerObservable = this.tracker.getCurrentPosition();
let settingsObservable = this.user.loadSettings();

Observable.merge(trackerObservable, settingsObservable)
        .switchMap((coords: Coordinates, settings: Settings) => {
            this.currentCoords = coords;
            return this.navigatorMap.createMap(map_id, {
                lat: coords.latitude,
                lng: coords.longitude
            }, settings);
        }).subscribe(() => { [...] })

1 个答案:

答案 0 :(得分:2)

使用forkJoin获取两个可观察数据。

Observable
    .forkJoin(trackerObservable, settingsObservable)
    .map((data: Array<any>) => {
        let coords: data[0];
        let settings: data[1];
        this.currentCoords = coords;
        return this.navigatorMap.createMap(map_id, {
            lat: coords.latitude,
            lng: coords.longitude
        }, settings);
    });