Как правильно обрабатывать http почтовый запрос, когда сервер недоступен? - PullRequest
0 голосов
/ 30 октября 2018

Как правильно обрабатывать http-ответ, когда сервер недоступен?

Теперь я отправляю запрос как:

    this.requestMethods.SendCurrentStep(this.formRegister.currentForm().index).subscribe(() => {
       // TODO
    });

// Code below is not executed father

Метод:

public SendCurrentStep(step: number): Observable<any> {
    return this.http.post('https://localhost:9090/NotAvailableUrl', {
      'step' : step
    })
      .map(res => (<any>res)._body === '' ? {} : res)
      .catch(this.handleError);
  }

Ответы [ 2 ]

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

Вам нужно выбросить ошибку из вашей первой подписки, чтобы вторая подписка получила ее. Как то так ...

public SendCurrentStep(step: number): Observable<any> {
    return this.http.post('https://localhost:9090/NotAvailableUrl', {
      'step' : step
    })
      .map(res => (<any>res)._body === '' ? {} : res)
      .catch((error) =>
    {
       Observable.throw(this.handleError(e)))
    });
  }

Тогда вы можете точно так же поймать его при второй подписке

this.requestMethods.SendCurrentStep(this.formRegister.currentForm().index).subscribe(() => {
       // TODO
    }).catch((error) => {
   Console.log("There was a problem sending this request");
});

Это то, что вы имели в виду? Если вы имели в виду, как вы можете сказать, что сервер не работает, в отличие от внутренней ошибки сервера или неправильного запроса - вы не сможете. Вы могли бы использовать код ответа?

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

Когда ваш сервер недоступен, вам сообщают о RXJS.

this.requestMethods.SendCurrentStep(this.formRegister.currentForm().index)
.subscribe(
(sucessResponse) => 
  {
       // TODO your stuff with returned data
  },
(errorResponse) => 
  {
      // Here if the response is falsey -i.e: code = 500 / 404 ...
  }

);

У вас нет ничего для реализации на лицевой стороне приложения, вам нужно только убедиться, что статус кода ответа хорошо отправляется из серверной части, а также ответы. Проверьте здесь ( и всю страницу ) для получения дополнительной информации.

PS : удалите .catch(this.handleError);, и я думаю также, как и .map(res => (<any>res)._body === '' ? {} : res), потому что я не уверен, что это должно быть там.

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