[英]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.