2016-10-20 4 views
8

Я пытаюсь использовать Observable.forkJoin, и обработчик подписки никогда не попадает. Оператор forkJoin работает для меня в других частях моего приложения, и единственная разница, которую я могу придумать в нерабочем сценарии, заключается в том, что наблюдаемые создаются из BehaviorSubject объектов, используя свою функцию asObservable().Угловые 2 наблюдаемые значения rxjs, созданные из BehaviorSubject, не работают с forkJoin

Это подписываться получает удар

let obs = Observable.of(1); 

    Observable.forkJoin(
     obs 
    ).subscribe(data => { 
     console.log(data); 
    }); 

Это один не

let bs = new BehaviorSubject<number>(1); 
    let obs = bs.asObservable(); 

    Observable.forkJoin(
     obs 
    ).subscribe(data => { 
     console.log(data); 
    }); 

Конечно, в моей реальной пользы дела есть больше чем один obseravble поэтому я использую forkJoin в первом место.

Есть ли что-то еще, что нужно сделать для BehaviorSubject, чтобы он работал с forkJoin?

UPDATE:

После исследования RxJs документов немного больше я понял, что Observable.combineLatest был гораздо лучше подходит для моей потребности, чем forkJoin ... Ссылка здесь в случае, если какая-либо попадается этим SO сообщения: http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-combineLatest

ответ

6

Вопрос заключается в том, что forkJoin присоединяется к наблюдаемым при их завершении.

В вашем первом фрагменте вы создаете наблюдаемый, используя of, который после subscribe немедленно испускает значение и затем завершает работу.

В вашем втором фрагменте BehaviorSubject не завершен. Если вы должны были позвонить по телефону complete, вы увидите значение, зарегистрированное на консоли:

let bs = new BehaviorSubject<number>(1); 
let obs = bs.asObservable(); 

Observable.forkJoin(
    obs 
).subscribe(data => { 
    console.log(data); 
}); 

bs.complete(); 
+3

Благодарим за отзыв. После изучения RxJs docs немного больше я понял, что 'Observable.combineLatest' был намного лучше подходит для моей потребности, чем' forkJoin' ... Ссылка здесь, если какая-либо натолкнется на эту публикацию SO: http://reactivex.io/ rxjs/класс/ES6/Observable.js ~ Observable.html # статический метод-combineLatest – cboston

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