вызов функции, которая может или не может сделать HTTP-запрос - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть функция, которая выглядит примерно так ...

myFunction() {
  //some logic
  if (expression) {
    return value;
  }

  Observable.forkJoin(
    service.someHttpGet,
    service.anotherHttpGet
  ).subscribe((data) => {
    //some logic
    return value;
  });
}

обратите внимание, что если выражение истинно, функция сразу же вернет значение. в противном случае возможна задержка возврата. поэтому, когда я пишу

const x=myFunction();

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

1 Ответ

0 голосов
/ 06 сентября 2018

Если возвращаемое значение функции зависит хотя бы от одного Observable, тип возвращаемого значения функции должен быть Observable или хотя бы Promise. Это меняет использование функции, конечно, но альтернативы этому нет.

Подробнее об основных обратных вызовах JavaScript вы можете прочитать здесь .

Ваш код будет изменен на:

myFunction(): Observable<any> {
  if (expression) {
    return Observable.of(value);
  }

  return Observable.forkJoin(
    service.someHttpGet,
    service.anotherHttpGet
  ).pipe(
      map(values => //here you'll modify the values and return the result)
  );
}

А по использованию:

myFunction().subscribe(val => x = val);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...