如何在angularJs中使“for循环”同步?

时间:2016-12-14 18:10:21

标签: javascript angularjs for-loop

我正在尝试从后端服务器获取用户详细信息,我正在获取详细信息但不按顺序,详细信息正在相互混合。 我的控制器代码在这里

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

1 个答案:

答案 0 :(得分:0)

要使用AngularJS更改JavaScript中的异步执行的默认行为,您需要使用$q promises。这将使您可以控制调用服务方法,并根据promises ($q)的结果控制执行行为。