2013-07-22 25 views
5

における2つのHTTPリクエスト・コールを使用しているとき、私はここに明示的に

適用またはダイジェストメソッドを呼び出していないi'am $進捗エラー号にすでにダイジェストを認識してんだけど、すでに進行中のダイジェスト

私は$ダイジェストがすでに進行中で、私のコードは私の懸念はエラーが中にあるものを正しく呼び出され

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

要求の両方のようなものであることをエラーに私をリードして同じangularJS機能の2つのHTTP呼び出しを使用しています$ digestが既に進行中のfirebugには、このエラーを処理できる方法がありますか?

+0

$ applyを呼び出さないとこの問題は発生しません。 )または$ digest()を手動で実行します。これが問題の原因となっているコードスニペットであることは間違いありませんか? – godfrzero

+0

はい、私はちょうど1つのHttpリクエストを呼び出すときに、私はこれらの2つを一緒に呼び出すときにすべてが問題なく動作するように見えるからです。 –

+3

alertをconsole.logに置き換えようとしましたか? –

答えて

1

AngularJS」イベントループは、alert()までconfirm()を待って、そしてprompt()(少なくとも$http呼び出しのために)値を返しません。ただし、ポップアップをレンダリングしてからループに入るまでには短い間隔があります。これは、OPが最初にエラーを表示しなかった理由を説明しています。

これがhttpコールの数に依存しないことを確認するには、単一のhttpコールのsuccess()メソッドで1つのアラートを使用してみてください。ポップアップを約1秒以内に確認してもエラーは発生しません。 300msですが、後で確認するとエラーが発生します。

0

代わりに$ window.alertを使用してください。 これは、別のダイジェストが進行中の場合にも起こりますが、すばやく回避策を$ timeout()にラップします。

関連する問題