繁体   English   中英

未调用http响应上的RxJs / Angular2映射函数

[英]RxJs/Angular2 map function on http response not called

好的,关于map()函数肯定有些不明白的地方。 我希望在两种订阅情况下, 映射的术语都会写入控制台。 但是,不是http响应的状态码为4xx。

http.get("http://my.domain/rest/path").map(
  data => {
    console.log("mapped");
    return data;
  }
).subscribe(
  data => {
    console.log("good");
  },
  error => {
    console.log("bad");
  }
);

这里有什么提示吗?

map函数仅处理“良好”数据,不会出错。 在实际情况下,我希望Ok情况(实际数据)和Bad Request情况(错误消息)的正文数据也不同。 要捕获并处理http.get函数中的错误,请使用catch

let obs = http.get("http://my.domain/rest/path").map(
  data => {
    console.log("mapped");
    return data;
  }
).catch(err => console.log(err));

obs.subscribe(...);

Angular 2 Http客户端将状态码 4xx5xx响应视为错误 因此, map操作员不会收到发出的响应。

请注意,如果由于响应的状态码而引发错误,则该错误将包含statusstatusText属性:

http.get("http://my.domain/rest/path").map(
  data => {
    console.log("mapped");
    return data;
  }
).subscribe(
  data => {
    console.log("good");
  },
  error => {
    if (error.status) {
      console.log("somewhat bad: " + error.status);
    } else {
      console.log("really bad");
    }
  }
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM