2016-11-05 8 views
0

をクリックしてくださいリクエストを取得する。データを取得して処理し、$ scope変数に格納します。上記のようにクリックイベントをトリガーする前に、これらのリクエストを完了することが必要です。私は両方の機能に約束を実装しました。しかし、クリックも最初に完了してから、httpリクエストが完了します。上記の要件をどのように達成できますか?プロセスHTTP GET完全に前の要求は、私は、次のJavaScriptコードを持っているイベント

+0

関数 'getActiveBill'と' getBillDetails'の定義を追加する必要があります。キーは、応答があるときにクリックが実行されるようにする関数を登録することです。リクエストを行う2つの関数を操作することで、それを実行できます。 – toraman

答えて

1

あなたはこのように、約束を使用する必要があります:あなたの例では

$scope.fav_bill_details=function (id1,id2,bill_id) { 
    document.getElementById(id2).style.display="none"; 
    $scope.getActiveBill().then(function() { 
     document.getElementById(id1).style.display="block"; 
     return $scope.getBillDetails(bill_id); 
    }).then(function() { 
     var btn=angular.element(document.getElementById(bill_id));     
     angular.element(document.getElementById(btn.id)).trigger('click'); 
    }); 

あなたは非同期関数を呼び出すが、それらが終了するのを待っていない、これはそれを解決します。

+0

しかし、関数 'getActiveBill'は約束オブジェクトを返します。 'getBillDetails'がリクエストを完了するのを待つことも確かですか?私は 'getBillDetails'も約束オブジェクトを返し、' then'は次のように実行されるべきだと思います: return $ scope.getBillDetails(bill_id).then(function(){/ * trigger thingy */ }) ; – toraman

+1

まず、彼は両方とも約束を返すと書いた。そして、私が書いたことが、何を示唆しているのですか。約束がもう一つの約束を返すと、次の約束を待っています。私が書いたことは、getActiveBill =(約束待ち)=> getBillDetails =(約束待ち)=>何かをすることです。 – Nayish

+0

あなたは絶対に正しいです。申し訳ありませんが、私は彼が約束を述べているのを見ませんでした。また、約束がどのように働くかについてもあなたは正しいです。私は何を考えているのか分かりません – toraman

関連する問題