2016-09-27 84 views
3

我有兩個行爲主題流,我試圖forkJoin沒有運氣。正如我想象的那樣,它給出了它的最後兩個值。這可能以某種方式實現它嗎?ForkJoin 2 BehaviorSubjects

它不在主題後面調用。

let stream1 = new BehaviorSubject(2); 
let stream2 = new BehaviorSubject('two'); 

Observable.forkJoin(stream1, stream2) 
    .subscribe(r => { 
     console.log(r); 
    }); 

回答

4

注意什麼forkJoin()實際上從它的文檔的功能:

並行運行所有可觀察序列,並收集他們的最後一個元素。

這意味着forkJoin()發射時所有輸入可觀察是完整的值。當使用BehaviorSubject這意味着顯式調用他們兩個complete()

import {Observable, BehaviorSubject} from 'rxjs'; 

let stream1 = new BehaviorSubject(2); 
let stream2 = new BehaviorSubject('two'); 

Observable.forkJoin(stream1, stream2) 
    .subscribe(r => { 
    console.log(r); 
    }); 

stream1.complete(); 
stream2.complete(); 

見現場演示:http://plnkr.co/edit/MtYfGLgqgHACPswFTVJ5?p=preview

+0

謝謝您的回答!您是否測試過您的代碼,因爲該日誌未在我的計算機中調用? – user1693057

+0

@ user1693057我更新了我的答案 – martin