2016-09-27 6 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

 Смежные вопросы

  • Нет связанных вопросов^_^