Возврат фиктивного http ответа вместо вызова сервера в angular4 - PullRequest
0 голосов
/ 18 мая 2018

У меня есть функция myFunc(), на которую я подписываюсь.

Если она вызывается с помощью X, тогда я хочу, чтобы это был обычный HTTP-ответ от Сервера.

Если этовызванный без X, я хочу, чтобы он возвратил «фальшивый» http-ответ с пустым массивом в результате.

Как я могу это сделать?Я пытался вернуть пустое наблюдаемое, но подписка никогда не срабатывает.

myFunc(x) {
  if (x) {
    return this.http.get('myURL');
  } else {
    return Observable.from<Response>([])
  }
}

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Observable.empty не будет запускать функцию onNext подписки, но будет запускать onComplete.Вы могли бы поместить некоторые из этой логики там.В качестве альтернативы вы можете использовать

return Observable.just(null);

, чтобы вернуть Observable с нулевыми данными

0 голосов
/ 18 мая 2018

Просто замените Observable.from<Response>([]) на Observable.of<Response>([]).

return Observable.of<Response>([])

Это потому, что Observable.from повторяет входной массив и выдает все его элементы.Поскольку массив пуст, он ничего не излучает.Observable.of просто принимает то, что вы передаете в качестве параметра, и отправляет его как next с последующим уведомлением complete.

0 голосов
/ 18 мая 2018

Вы можете вернуть что-то вроде этого, и это вызовет вашу подписку:

return Observable.of<any>({ isSuccess: false });

Здесь вы можете передать любой объект. Я только что создал простой объект { isSuccess: false }

...