簡體   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