Sam*_*a K 1 rxjs ionic-framework angular
我正在尝试使用 ionic4 应用程序中的以下代码捕获错误代码为 400 的 HTTP 错误。但它没有抓住它,这里有什么问题。控制台日志行均未执行,但在 Firefox 控制台中显示 400 错误。
export class AuthService {
constructor(private httpClient: HttpClient) {}
login(email: string, password: string){
const data = {
password: password,
email: email,
}
this.httpClient.post(url, data).pipe(
tap((res: IAuthResponse) => {
console.log("Catch error 1")
return res;
}),
catchError((error) => {
console.log("Catch error 2")
return Observable.throw(new Error(error.status));
})
).subscribe(
(result) => {
console.log("Catch error 3")
},
(error) => {
console.log("Catch error 4")
}
);
}
Run Code Online (Sandbox Code Playgroud)
实际上我只想在我编码 console.log 行的任何地方处理这个错误。找到了很多这样的例子,但没有一个有效。
编辑:在我的真实代码中,控制台日志第 1 行位于 AuthService 类中,但订阅代码位于不同的类文件中。这两个类都必须根据结果进行一些初始化。所以我需要同时拥有管道代码和订阅代码。
这是可以做到的方式
这是工作示例
this.httpClient.post("ssdsdsd", data).pipe(
(res: any) => {
console.log("Catch res ")
return res;
},
).subscribe(
(result) => {
console.log("Catch result ")
},
(error) => {
console.log("Catch error ")
}
);
Run Code Online (Sandbox Code Playgroud)