我希望我的应用程序始终在$http
运行之前和之后执行一些操作,例如加载动画或删除所有邮件。
// Add loading animation + Remove all messages
$http({}).then(function(response) {
// Remove loading animation + Add Success messages
}, function(response) {
// Remove loading animation + Add Failure mesages
});
但如果我这样编码,我的代码就不干了。 我怎么能这样做而不重复自己?
谢谢!
答案 0 :(得分:0)
您应该能够使用拦截器实现它。阅读以下内容。
http://www.webdeveasy.com/interceptors-in-angularjs-and-useful-examples/
您可以将自定义服务注入Interceptor组件。在请求函数中启用动画ON并在响应函数中将其关闭。您的主页也应该使用相同的服务来制作带有ng-if like
的动画DIV<div ng-if="vm.myHttpStateService.isBusy">
..... animation here ...
</div>
答案 1 :(得分:-1)
使用承诺的.finally
方法
//Add loading animation + Remove all messages
$http({}).finally(function() {
//Remove loading animation
}).then(function onSuccess(response){
//Add Success messages
}).catch(function onReject(response){
//Add Failure mesages
});
来自文档:
Promise API
<强>方法强>
finally(callback, notifyCallback)
- 允许您观察承诺的履行或拒绝,但不要修改最终值。无论承诺被拒绝还是已解决,这对于释放资源或进行必要的清理都非常有用。有关详细信息,请参阅完整规范。