2015-10-23 1 views
0

У меня есть список идентификаторов [1,2,3,4], мне нужно сделать обновление с помощью этих идентификаторов и с ответом от моего обновления мне нужно сделать обновление пользовательского интерфейса к отображаемому списку. я должен обновить каждую строку в моем списке асинхронного, когда один идентификатор обновление закончило Сделаю обновление пользовательского интерфейса для этой строки

моего подхода к тому, чтобы сделать петлю и сделать запрос $ HTTP для каждого идентификатора

for(var i = 0 ; i < ids.length; i++){ 
    $http.get("api/update?Id=" + ids[i]).then(function (result) { 
          $scope.nodeUpdate = result; 
    }); 
} 

    $scope.$watch('nodeUpdate', function() { 
     //update node result, the result will have node id+new data 
    }); 

Что вы думаете? Это должно работать нормально? Есть ли лучший способ сделать это?

Спасибо,

+0

Почему бы вам не использовать часы? Просто вызовите функцию, которая «обновляет результат узла» из функции обратного вызова http. –

+0

Вы правы, я могу это сделать. Думаете ли вы таким образом, я не пропущу никакого результата. Что делать, если 2 результата возвращаются в одно и то же время? – user2095956

+0

JavaScript однопоточный. В то же время нет возможности для двух вещей. –

ответ

1

Лучший способ предотвратить кода путем создания anononyms стека вызовов функций.

for(var i = 0 ; i < ids.length; i++){ 
    (function() 
     { 
     $http.get("api/update?Id=" + id).then(function (result) { 
      $scope.nodeUpdate = result; 
     }); 
    )(ids[i]); 
} 
+0

, пожалуйста, объясните, что вы здесь сделали – user2095956

Смежные вопросы