订阅中的错误回调未映射到 JSON 槽映射函数!为什么?
this.http.get("/something")
.map((response: any) => response.json())
.subscribe((response: any) => {
// response is body of request
}, (error: any) => {
// error must be mapped again
let error = JSON.parse(error._body);
});
最佳答案
因为 get()
返回的 Observable 有错误,map()
被传递的函数没有被调用(因为没有事件被发射)。即,箭头函数 (response: any) => response.json()
没有被调用。相反,错误会传播直到被某些东西捕获。如果没有发现错误,您将在浏览器控制台中看到异常。
您可以使用 .catch()
和/或通过在 subscribe()
中提供错误处理程序来捕获错误。
我试图在这里创建一个健壮的 http
错误处理程序:https://stackoverflow.com/a/35329086/215945
它捕获从 .get()
或 .json()
产生的错误。
关于angular - Observable 中的错误处理程序未映射到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35488808/