Функция возвращает Observable, но возникла проблема с возвратом вложенного значения - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть функция, которая возвращает наблюдаемую.

test(id: int): Observable<Group>{
  this.http.get('test/').subscribe( (result:any) => {
     resultingVal = Group.fromJson(result.group);
  });
}

и на данный момент она не возвращает одну, но вы можете видеть, что я хочу вернуть определенное свойство во вложенной наблюдаемой.

Я хочу, чтобы он возвращал returningVal , но я был озадачен стандартным способом возврата этого вложенного значения.Я думал превратить это в обещание и подождать, а затем перейти к данным, я их почистил, но я считаю, что это довольно хакерски.

test(id: int): Observable<Group>{
  let resultingVal = null
  let promise = this.http.get('test/').toPromise().then( result => {
     resultingVal = Group.fromJson(result.group);
  });
  return from(Promise.all([promise]).then( _ => resultingVal));
}

Является ли это обещание решением способа сделать, чтобыэто, или есть более чистая версия, похожая на выше?Я чувствую, что использование обещаний таким способом - взлом.

1 Ответ

2 голосов
/ 25 сентября 2019

в вашем вопросе тестовый метод не возвращает наблюдаемое, вам просто нужно вернуть get observable, это решит ту часть, где test возвращает наблюдаемое, вы можете использовать оператор map rxjs для преобразования результата, применяя функцию, чтобыиспользуйте любой оператор rxjs, который вам нужен, используйте pipe и pipe, просто составитель операторов rxjs.

test(id: int): Observable<Group>{
  return this.http.get('test/').pipe(map((result:any) => 
     Group.fromJson(result.group))
  );
}

, чтобы получить значение, которое необходимо подписать для метода тестирования

test(10).subscribe(res => console.log(res))
...