[英]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
客户端将状态码为 4xx
和5xx
响应视为错误 。 因此, map
操作员不会收到发出的响应。
请注意,如果由于响应的状态码而引发错误,则该错误将包含status
和statusText
属性:
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.