如何知道angular完成了所有的处理和渲染
How to know that angular completed all processing and rendering
我需要停止进度条。
如果我有多个 http
请求,我怎么知道所有线程何时完成,以及所有响应何时呈现。
我尝试在响应中使用 $httpProvider.interceptors
,但我不知道这是否是最后一个 http
响应。而且你也不知道什么时候会呈现最后一个响应。
您可以使用像 angular-busy or ngProgress 这样的模块来做同样的事情。
您可以通过 http.pendingRequests
在您的拦截器中跟踪未决请求,例如
angular.module('myApp').factory('myHttpResponseInterceptor', function($q, $location, $injector, $rootScope){
var _http = null;
return {
request: function(config){
$rootScope.$broadcast("loader_show");
return config;
},
response: function(response){
_http = _http || $injector.get('$http');
if(_http.pendingRequests.length < 1){
$rootScope.$broadcast("loader_hide");
}
return response;
},
responseError: function (response) {
_http = _http || $injector.get('$http');
if(_http.pendingRequests.length < 1){
$rootScope.$broadcast("loader_hide");
}
console.log("response rejected in interceptor");
return $q.reject(response);
}
};
});
我在我的项目中使用过它,效果很好。
希望对你也有帮助。
我需要停止进度条。
如果我有多个 http
请求,我怎么知道所有线程何时完成,以及所有响应何时呈现。
我尝试在响应中使用 $httpProvider.interceptors
,但我不知道这是否是最后一个 http
响应。而且你也不知道什么时候会呈现最后一个响应。
您可以使用像 angular-busy or ngProgress 这样的模块来做同样的事情。
您可以通过 http.pendingRequests
在您的拦截器中跟踪未决请求,例如
angular.module('myApp').factory('myHttpResponseInterceptor', function($q, $location, $injector, $rootScope){
var _http = null;
return {
request: function(config){
$rootScope.$broadcast("loader_show");
return config;
},
response: function(response){
_http = _http || $injector.get('$http');
if(_http.pendingRequests.length < 1){
$rootScope.$broadcast("loader_hide");
}
return response;
},
responseError: function (response) {
_http = _http || $injector.get('$http');
if(_http.pendingRequests.length < 1){
$rootScope.$broadcast("loader_hide");
}
console.log("response rejected in interceptor");
return $q.reject(response);
}
};
});
我在我的项目中使用过它,效果很好。
希望对你也有帮助。