如果Response中的状态不在2XX系列中,angular2的http客户端是否会抛出异常?

时间:2017-07-04 09:33:29

标签: angular http rxjs

如果响应的map不属于Observable系列,则会从HTTP请求为返回的status code执行2xx控件到达catch块本身,甚至不会成为map的成功回调。这是它应该如何工作?我在哪里可以找到相关的代码? 我是否正确地说答案中的status code使其转到catch(除非很明显,我的地图本身没有错误)?

1 个答案:

答案 0 :(得分:2)

是。如果收到不成功的状态代码,Angular的HTTP实现会检查状态代码并从observable发出错误。

请参阅http_utils.ts中的isSuccess方法:

export const isSuccess = (status: number): boolean => (status >= 200 && status < 300);

xhr_backend.ts中的XHRConnection实施:

const response = new Response(responseOptions);
response.ok = isSuccess(status);
if (response.ok) {
  responseObserver.next(response);
  // TODO(gdi2290): defer complete if array buffer until done
  responseObserver.complete();
  return;
}
responseObserver.error(response);