2013-07-22 50 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()

相關問題