我正在努力弄清楚如何使用Angular http和promises检测请求超时。我正在使用以下代码来格式化来自我的API的响应,并且当前正在超时,希望通过错误消息进行处理,当我的API返回实际错误消息(即使它没有被击中)时,此处的代码也可以正常工作当API超时时。
我找不到有关Angular http的任何文档,该文档具有处理超时的方法,因此有帮助的事情,谢谢!
代码:
/**
* GET from the API
* @param params What to send
* @param path Where to go
*/
public get(path, params): Promise<any> {
return this.formatResponse(
this.http.get(this.apiUrl + path, params)
);
}
/**
* Takes the API response and converts it to something usable
* @param response Promise of formatted data
*/
public formatResponse(response): Promise<any> {
return response
.toPromise()
.then(r => r.json().data)
.catch(e => {
console.log('hitting error');
const errors = e.json().errors;
let error = 'Something went wrong, please try again in a few minutes.';
if (errors && errors.length > 0) {
error = errors[0].message;
}
// Create alert
this.utilities.createAlert(
'Whoops!',
error
);
// Throw the error
throw new Error(error);
});
}
在“网络”标签中进行监视时,我看到:
无法加载资源:请求超时。
答案 0 :(得分:1)
这是什么
public get(path, params): Promise<any> {
return this.formatResponse(
this.http.get(this.apiUrl + path, params).pipe(timeout(10000), catchError(this.handleError)
);
}
并根据需要创建错误处理程序。其余的将保持不变。