rxjs 5.5.6 forkJoin stop с настраиваемым наблюдаемым

Я пытаюсь присоединиться к пользовательскому Observable (rxjs 5.5.6)

import { forkJoin } from 'rxjs/observable/forkJoin';

forkJoin(
  this.resources.loadRefsCatalog()
).subscribe((res) => {
  // I'm never executed :(
});

и цель

public loadRefsCatalog(): Observable<any> {
  console.log(1);
  return new Observable((observer) => {
    console.log(2);
    // doing something
  });
}

У меня есть 1 и 2 в журнале консоли, но я никогда не подписываюсь на forkJoin.

Я пробую вернуться с помощью {unsubscribe () {}} и Observer.complete (), но без изменений. Так что я застрял, не понимая почему.

Заранее спасибо за любые идеи.

// Конечно, мой forkJoin предназначен для нескольких запросов, а другие наблюдаются по http и работают хорошо, но не для моих собственных. Я пробовал много комбинаций.


person Killan    schedule 27.06.2018    source источник
comment
Наблюдаемое должно завершиться, чтобы forkJoin испустил. А передача единственного наблюдаемого в forkJoin в некоторой степени бессмысленна.   -  person cartant    schedule 27.06.2018
comment
Совершенно верно, но документация не уточняет, является ли next () ключом! Поэтому вам нужно вызвать next (value_to_emit) и complete (), если он завершен. И это работа. Спасибо за ваше вмешательство.   -  person Killan    schedule 27.06.2018


Ответы (1)


Решение

  public loadRefsCatalog(): Observable<any> {
    return new Observable((observer) => {
      this.dataProvider.loadRefsCatalog().subscribe((res) => {
        this.refsCatalog = res;

        observer.next(true);
        observer.complete();
      });
    });

Ключ - это next (a_value) и complete (), но в основном next () для forkJoin.

        observer.next(...whatever you want to send to forkJoin...);
person Killan    schedule 27.06.2018