Javascript 是否可能知道,该请求正在处理中

Javascript 是否可能知道,该请求正在处理中,javascript,angularjs,Javascript,Angularjs,我有很多页面,我使用$http来处理请求(获取数据、更新),每次都必须使用ajax load.gif 现在,我需要这样做: <div ng-show="model == null || ajaxUpdating"> <div> <img src="~/Content/Images/gif-load.gif" /> <p>Waiting server respone...</p> </

我有很多页面,我使用
$http
来处理请求(获取数据、更新),每次都必须使用
ajax load.gif

现在,我需要这样做:

<div ng-show="model == null || ajaxUpdating">
    <div>
        <img src="~/Content/Images/gif-load.gif" />
        <p>Waiting server respone...</p>
    </div>
</div>
var myApp = angular.module('myApp', []).config(
    [ '$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
    //routes here   
 }]).config(function($httpProvider) {
//show a loading div when a http request is running
        var numLoadings = 0;
        var loadingScreen = $('<div style="position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;background-color:gray;background-color:rgba(70,70,70,0.2);"><img style="position:absolute;top:50%;left:50%;" alt="" src="css/loading.gif" /></div>').appendTo($('body')).hide();
        $httpProvider.responseInterceptors.push(function() {
            return function(promise) {
                numLoadings++;
                loadingScreen.show();
                var hide = function(r) { if (!(--numLoadings)) loadingScreen.hide(); return r; };
                return promise.then(hide, hide);
            };
        });
    });
那么,我想知道,是否可以检查请求是否正在处理?我不想在我的代码中的任何地方都使用这么多标志,如果我只编写以下代码,可能会容易得多:

$http.isProcessing

比如说


Thx您。

如果您需要在ajax http请求进行时加载gif,您可以在配置上设置拦截器,如下所示:

<div ng-show="model == null || ajaxUpdating">
    <div>
        <img src="~/Content/Images/gif-load.gif" />
        <p>Waiting server respone...</p>
    </div>
</div>
var myApp = angular.module('myApp', []).config(
    [ '$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
    //routes here   
 }]).config(function($httpProvider) {
//show a loading div when a http request is running
        var numLoadings = 0;
        var loadingScreen = $('<div style="position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;background-color:gray;background-color:rgba(70,70,70,0.2);"><img style="position:absolute;top:50%;left:50%;" alt="" src="css/loading.gif" /></div>').appendTo($('body')).hide();
        $httpProvider.responseInterceptors.push(function() {
            return function(promise) {
                numLoadings++;
                loadingScreen.show();
                var hide = function(r) { if (!(--numLoadings)) loadingScreen.hide(); return r; };
                return promise.then(hide, hide);
            };
        });
    });
var myApp=angular.module('myApp',[]).config(
[“$routeProvider”、“$locationProvider”,
函数($routeProvider,$locationProvider){
//这里的路线
}]).config(函数($httpProvider){
//在http请求运行时显示加载div
var numLoadings=0;
var loadingScreen=$('').appendTo($('body')).hide();
$httpProvider.responseInterceptors.push(函数(){
返回函数(承诺){
numload++;
加载screen.show();
var hide=function(r){if(!(-numLoadings))loadingScreen.hide();返回r;};
回报承诺。然后(隐藏,隐藏);
};
});
});

请参阅,查找拦截器

如果需要在ajax http请求进行时加载gif,可以在配置中设置拦截器,如下所示:

<div ng-show="model == null || ajaxUpdating">
    <div>
        <img src="~/Content/Images/gif-load.gif" />
        <p>Waiting server respone...</p>
    </div>
</div>
var myApp = angular.module('myApp', []).config(
    [ '$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
    //routes here   
 }]).config(function($httpProvider) {
//show a loading div when a http request is running
        var numLoadings = 0;
        var loadingScreen = $('<div style="position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;background-color:gray;background-color:rgba(70,70,70,0.2);"><img style="position:absolute;top:50%;left:50%;" alt="" src="css/loading.gif" /></div>').appendTo($('body')).hide();
        $httpProvider.responseInterceptors.push(function() {
            return function(promise) {
                numLoadings++;
                loadingScreen.show();
                var hide = function(r) { if (!(--numLoadings)) loadingScreen.hide(); return r; };
                return promise.then(hide, hide);
            };
        });
    });
var myApp=angular.module('myApp',[]).config(
[“$routeProvider”、“$locationProvider”,
函数($routeProvider,$locationProvider){
//这里的路线
}]).config(函数($httpProvider){
//在http请求运行时显示加载div
var numLoadings=0;
var loadingScreen=$('').appendTo($('body')).hide();
$httpProvider.responseInterceptors.push(函数(){
返回函数(承诺){
numload++;
加载screen.show();
var hide=function(r){if(!(-numLoadings))loadingScreen.hide();返回r;};
回报承诺。然后(隐藏,隐藏);
};
});
});

请参阅,查找拦截器

,只要知道ajax是异步的,那么回调机制就可以知道它何时完成。因此,您需要使用标志或类似的东西。据我们所知,ajax是异步的,因此回调机制需要知道它何时完成。所以你需要使用标志或类似的东西。顺便说一句,我们最好把这个推到html中,只显示隐藏它-这太棒了!顺便说一句,我们最好把这个推到html中,只显示隐藏它-这太棒了!