2016-06-13 108 views
1

我需要等待2個observable才能處理請求,請求的類型是不同的,例如,我該如何等待2種具有不同返回類型的觀察值?

observable1 = Observable.create((observer: Subscriber<Type1> => ...) 

observable2 = Observable.create((observer: Subscriber<Type2> => ...) 

如何避免嵌套訂閱如

observable1.subscribe(result1 => { 
    observable2.subscribe(result2 => { 
     ... 
     <do something with result1 and result2> 
     ... 
    } 
} 

我試圖

observable1.concat(observable2).subscribe(result => ...) 

但似乎依次從兩個觀測閱讀。

我沿着

observable1<???>observable2.subscribe((result1, result2) => ...) 

行我怎麼能這樣做在想什麼?

回答

1

你是對的:concat會依次從observables中讀取。以「加盟」他們(按順序位置),你將要使用zip

const a$ = Rx.Observable.just(1); 
const b$ = Rx.Observable.just(2); 

const combined$ = a$.zip(b$, (x, y) => ({ a: x, b: y })); 

const subscription = combined$.subscribe(x => console.log(x)); 

注意這樣一個事實,這兩個流是不同類型的使用zip時,如必須提供的功能不會造成不便從兩個「壓縮」值中產生新的值。

+0

謝謝,那正是我一直在尋找的! –