Почему невозможно вернуть forkJoin? - PullRequest
0 голосов
/ 30 октября 2018

Я не понимаю, почему я могу сделать

ForkJoin(service.Obs1(), service.Obs2()).subscribe

Но если я произвожу рефакторинг своего кода таким образом, чтобы добавить в класс обслуживания метод, который возвращает ForkJoin(this.Obs1(), this.Obs2()), такой как, например,

updateWhatever(): Observable<[string, string]> {
return forkJoin([
  this.Obs1(),
  this.Obs(2)
]);}

Тогда, если я сделаю service.updateWhatever().subscribe(res => //handle res[]., он выдаст ошибку

You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable

Почему это не сработает? Нужно уметь рефакторировать таким способом. Что мне не хватает? Я понимаю, что он возвращает массив наблюдаемых, но почему вызов функции не может это обработать?

Может быть, мой вопрос, как обрабатывать метод, который возвращает forkJoin?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Возможно вернуть forkJoin. В вашем коде проблема в Obs1 и Obs2 - это не наблюдаемый, обещание, массив или Iterable. Вот почему rxjs выдает ошибку.

Согласен, @Picci комментарий, мы можем передать массив наблюдаемых в forkJoin и

Пример кода

const a = stream('a', 200, 3, 'partial');
const b = stream('b', 500, 3, 'partial');

someMethod().subscribe((response)=>{
  console.log(response);
});

someMethodFkAsAnArray().subscribe((response)=>{
  console.log(response);
});


function someMethod(){
  return forkJoin(a, b);
}

function someMethodFkAsAnArray(){
  return forkJoin([a, b]);

}

Демонстрация StackBlitz с использованием RxJs 5.5.2

0 голосов
/ 30 октября 2018

Специально для Rxjs 5 или ранее:

forkJoin не ожидает Array наблюдаемых наблюдений. Ожидается источник (ы) типа SubscribableOrPromise

Вам нужно будет сделать это так:

updateWhatever() {
  return forkJoin(
    this.Obs1(),
    this.Obs(2)
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...