错误:在同一个angular Js函数中使用两个Http请求调用时,$digest已经在进行中



我知道$digest已经在进行中的错误问题,但这里我没有显式调用apply或digest方法

我在同一angularJS函数中使用了两个http调用,这导致了$digest已经在进行中的错误,我的代码就像

 $http.post('/CRUDOper/memberInsert',$scope.memberAdd).
        success(function(post){
            if(!post.IsSuccess){
                alert(post.msg + "Try Again");
                return;
            }
            alert("Member Added Successfully");
        }
    );
    var autopass = Math.random().toString(36).slice(-8);
    var passwordinsert = {formno : $scope.memberAdd.formno, password : autopass  };
    $http.post('/CRUDOper/autogeneratepassword',passwordinsert).
        success(function(post){
            if(!post.IsSuccess){
                alert(post.msg + "Try Again");
                return;
            }
            alert("Autogenerated Password for present user : " + autopass );
        }
    );

两个请求都被正确调用了。我担心的是$digest的firebug中的错误已经在进行中。有什么方法可以处理这个错误吗?

AngularJS的事件循环不会等到alert()confirm()prompt()返回值(至少对于$http调用)。然而,呈现弹出窗口和进入$digest循环之间的间隔很短。这解释了为什么OP第一次没有得到错误:OP很快点击或按下返回键。

要验证这是否取决于http调用的数量,请尝试在单个http调用的success()方法中使用一个警报。如果您在大约300毫秒内确认弹出窗口,则不会出现错误,但如果您稍后确认,则会出现错误。

您应该使用$window.alert。尽管如此,当另一个摘要正在进行时,还是会发生这种情况,一个快速的解决方法是将其封装到$timeout()中

相关内容

最新更新