2016-12-14 5 views
0

私はバックエンドサーバーからユーザーの詳細を取得しようとしていますが、詳細は表示されていますが、順序は異なります。 私のコントローラコードがここangularJsで "forループ"を同期させる方法は?

function addRecentDetailsToDestination(array) { 
      for (var i = 0; i < array.length; i++) { 
       var value = array[i]; 
      userService.RetrieveRecentEduDetail(value.destinationId, function (rResponse) { 
        if (rResponse.success) { 
         value.destRecentEducationAvailable = true; 
         value.destRecentEducationName = rResponse.data.educationName; 

         userService.RetrieveCollege(rResponse.data.colCode, function (cResponse) { 
          if (cResponse.success) { 
           value.destRecentCollegeName = cResponse.data.colName; 
          } else { 

          } 
         }); 

        } else { 
         value.destRecentEducationAvailable = false; 

        } 
        alert(console.log(value.destRecentEducationName)); 
       }); 

       userService.RetrieveRecentProfessionDetail(value.destinationId, function (response) { 
        if (response.success) { 
         value.destRecentProfessionAvailable = true; 
         value.destRecentProfessionRole = response.data.professionRole; 
         value.destRecentProfessionCompany = response.data.professionCompany; 


        } else { 
         value.destRecentProfessionAvailable = false; 
        } 
       }); 
       }); 
      } 
     } 

このコードは正常に動作しますが、正しい結果を取得していないが、私を助けてください と私は、デフォルトの動作を変更するには、この

userService.RetrieveUserConnectionsBySourceId(userId, function (response) { 

       if (response.success) { 
        $scope.userConnectionsBySource = response.data; 

        addRecentDetailsToDestination($scope.userConnectionsBySource); 

       } else { 
        FlashService.Error(response.message); 
       } 
      }); 

答えて

0

のような関数を呼び出していますAngularJSを使用したJavaScriptの非同期実行では、$qの約束を使用する必要があります。これにより、サービスメソッドを呼び出す制御が得られ、約束の結果に基づいて($q)を実行すると、実行の動作を制御できます。

+0

私は$ qの約束を少し実装するべきですか? –

関連する問題