2016-11-13 13 views
-1

私は2つのjavscript async $ http funtionsを持っています。これは、テーブルを動的に作成するネストされた方法で角度jを使用しています。

私はこれらの機能を同期して実行する方法をいくつか求めています。

今のところ、jループはresultBの初期値に対してのみ実行されます。テーブルがコンパイルされると、fuctBはiのすべての値に対して実行されます。

$scope.funcA = function() { 
    $http({ 
    method : 'GET', 
    url : url,     
    }).then(function successCallback(response) { 
    $scope.resultA = response.data; 
    //process based on $scope.resultA 
    for (var i = 0; i < $scope.resultA .length; i++){ 
     $scope.funcB($scope.resultA[i][0]); 
     for(j=0; j<$scope.resultB .length; j++){ 
     //process based on $scope.resultB 
     }      
    } 
    $compile(/* document element*/); 

    }, function errorCallback(response) { 
    console.log(response.statusText); 
    }); 
} 

$scope.funcB = function(k){ 
    $http({ 
    method : 'GET', 
    url : url+k 
    data: k , 
    }).then(function successCallback(response) { 
    return $scope.resultB = response.data; 
    }, function errorCallback(response) { 
    console.log(response.statusText); 
    }); 
} 
+1

完全なコードで更新してください。あなたが何をしようとしているか診断できません。 – Aravind

+0

は質問を更新しました – rtk

+0

読みやすくするためにコードを整理しました。このコードの非同期操作を定義しました。あなたは同じ方法で同期を定義できますか? – rfornal

答えて

0
$scope.funcB = function(i) { 
    // return promise 
    return $http({.... 
     data: i ; 
     $scope.resultB = response.data; 
    }; 
} 


$http{..... 
$scope.resultA =response.data; 
for(var i =0; i< $scope.resultA.length; i++{ 
    process based on i value 
    $scope.funcB(i).then(function() { 
    // execute this part after promise completed (request B has ended and returned result) 
    for(var j =0; j<$scope.resultB.length;j++{ 
     process based on i and j; 
     } 
    } 
    compile(the document element); 
}); 
} 

例えば、それはあなたがここで何が起こっているか理解するのに役立ちます約束にいくつかのチュートリアルを確認してくださいhttp://liamkaufman.com/blog/2013/09/09/using-angularjs-promises/しかし、これらはインターネット上にたくさんあります。

+0

まだ非同期に動作しています – rtk

+0

*本当に*同期呼び出しをしたい場合は、これをチェックしてください:http://stackoverflow.com/questions/13088153/how-to-http-synchronous-call-with-angularjsしかし、angularjsを使って作業しているときには、約束を使用して非同期のajax呼び出しをしたいと思っています。 – csharpfolk

関連する問題