RxJs/Angular2 未调用 http 响应的映射函数
RxJs/Angular2 map function on http response not called
好的,关于 map()
函数,肯定有一些我不明白的地方。我希望在两种订阅情况下,术语 mapped 都会写入控制台。但是,如果 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
函数只处理 'good' 数据而不处理错误。在实际情况下,我希望 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
状态代码 as errors 的响应。所以 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");
}
}
);
好的,关于 map()
函数,肯定有一些我不明白的地方。我希望在两种订阅情况下,术语 mapped 都会写入控制台。但是,如果 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
函数只处理 'good' 数据而不处理错误。在实际情况下,我希望 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
状态代码 as errors 的响应。所以 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");
}
}
);