5

我知道 $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 已经在进行中的萤火虫错误有什么办法可以处理这个错误吗?

4

2 回答 2

1

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

要自己验证这不依赖于 http 调用的数量,请尝试在success()单个 http 调用的方法中使用一个警报。如果您在大约 10 分钟内确认弹出窗口,则不会出现错误。300ms,但稍后再确认会出错。

于 2013-07-29T23:35:48.590 回答
0

您应该改用 $window.alert 。当另一个摘要正在进行时仍然会发生这种情况,一个快速的解决方法是将其包装到 $timeout()

于 2014-07-23T06:33:11.960 回答