我正在尝试执行loading.dismiss((handingerror((方法,但不确定该怎么做?响应良好时,它非常有效,不确定如何处理错误情况
请帮助
@Injectable()
导出类共享{
private _postsURL = "https://jsonplaceholder.typicode.com/posts";
constructor(private http: Http, public loadingCtrl: LoadingController) {
}
getPosts(): Observable<IPosts[]> {
let loading = this.loadingCtrl.create({
content: 'loading...'
});
loading.present();
return this.http
.get(this._postsURL)
.map((response: Response) => {
loading.dismiss();
console.log("Result printed!!");
return <IPosts[]>response.json();
})
.catch(this.handleError);
}
handleError(error: Response) {
this.loading.dismiss();
console.log("Err printed!!" + error.statusText);
return Observable.throw(error.statusText);
}
}
loading
对象在您的handleError
方法中不存在,因为它范围范围为getPosts()
,因此您无法访问它,如果loading
是全球设置或属性,则可能是可能的你的班级。我认为有几个解决方案可以解决:
首先要解散您的加载,然后致电handleError
:
// your getPosts method ...
.catch(err =>{
loading.dismiss();
this.handleError(err);
});
第二个(如所说(正在创建属性loading
并使用它代替范围的加载对象。
private _postsURL = "https://jsonplaceholder.typicode.com/posts";
public loading;
constructor(private http: Http, public loadingCtrl: LoadingController) {
}
getPosts(): Observable<IPosts[]> {
this.loading = this.loadingCtrl.create({ content: 'loading...' });
this.loading.present().then(() =>{
return this.http
.get(this._postsURL)
.map((response: Response) => {
this.loading.dismiss();
console.log("Result printed!!");
return <IPosts[]>response.json();
})
.catch(this.handleError);
});
}
还尝试将您的方法内容包裹在加载present()
方法返回的承诺中,在加载(或任何其他可供使用的组件(之前,该方法dismiss()
的并发错误甚至显示给用户。<<<<<<<<<<<<<。/p>
无论如何,其中一种解决方案可能对您有用,希望它有所帮助。
AM将为Inoic 4用户删除此
const loading = await this.loadingController.create({ message: 'Processing card' })
loading.present().then( () => {
getPostFunction({
data: {email:"test@test.com"}
}).then((response) => {
loading.dismiss();
console.log(response);
}, (error) => {
loading.dismiss();
console.log(error)
});
})