2013-07-22 51 views
5

我所知道的$正在进行时错误的问题已经消化,但在这里我'不是调用应用或消化法明确

我使用同一angularJS功能,导致我那$摘要已经在进行中,我的代码是一样的正确调用

$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); 
     } 
    ); 

都要求什么我关心的是错误的错误两个HTTP调用萤火虫,$消化已在进行中有任何方法,我可以处理这个错误?

+0

正如您在问题中提到的,如果您不调用$ apply() )或$ digest()手动。你确定这是导致问题的代码片段吗? – godfrzero

+0

是的,因为当我打电话只有一个Http请求似乎对我来说正常工作,只是当我一起调用这两个问题发生 –

+3

您是否尝试将alert替换为console.log? –

回答

1

AngularJS”事件循环不等到alert()confirm(),并prompt()返回一个值(至少$http呼叫)。但是,在弹出窗口和输入$digest循环之间有一段短的时间间隔。这就解释了为什么OP第一次没有收到错误:OP很快就被点击或按下了。

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

0

您应该使用$ window.alert来代替。 当另一个摘要正在进行时,一个快速解决方法将它包装到一个$ timeout()

相关问题