Угловой код JS, выполняемый до того, как он иногда должен

0

У меня проблема с моим кодом, и я не могу понять, почему это происходит или решение проблемы. Моя проблема - вызов функции updateProduct() в конце кода, который вызывается до того, как оператор forEach даже начинает загружать 1 из 10 страниц. Я не понимаю, почему это делается. Кто-нибудь знает, что может вызвать это и что будет решением, чтобы это не происходило?

Я пробовал использовать обещание, и это было успешным на загрузке 7/10 страниц. До сих пор это было успешным на загрузке 9/10 страниц. На самом деле путают, как он завершает цикл до его запуска.

$http.get('file.json').success(function(data) {
        $scope.products = data;
        $scope.product_map = {};
        var itemsProcessed = 0;
        $scope.products.forEach(function(item) {
            $scope.product_map[item.sku] = item;
            itemsProcessed++;
            if(itemsProcessed === $scope.products.length) {                    
                $scope.seriesId = $scope.series_map[$scope.hashTag].seriesID;
                updateProduct($scope.series_map[$scope.hashTag].products[0].sku, $scope.series_map[$scope.hashTag].products[0].image);
            }
        });
    });
  • 0
    Спасибо за ответ. В любом случае работает. При использовании angular.forEach кажется, что он ломается примерно в 50% случаев, когда я использую javascript для каждого, кажется, что он ломается только в 10% случаев. Кажется, что угловой способ делать вещи ломается чаще, чем этот неугловой способ. Мне интересно, есть ли какая-то ошибка с кэшированием?
Теги:
for-loop
rendering

1 ответ

0

в порядке,

Кто-то отправил комментарий, а затем удалил этот комментарий. Прежде всего, спасибо за ваш комментарий, поскольку это было полезно для решения моей дилеммы. У меня есть 2 функции http.get, и мне нужно, чтобы каждая из функций завершилась до завершения цикла for-loop. Случилось то, что мой первый http.get повесил трубку и вызвал ошибку. Я даже не думал о первом, заканчивая, прежде чем загружать второй.

Я решил это со следующим:

$http.get('file1.json').success(function(data) {
    $scope.series= data;
    $scope.series_map = {};    
 }).then(function successCallback(){
    $http.get('file2.json').success(function(data) {
        $scope.products = data;
        $scope.products_map = {};
        $scope.products.forEach(function(item) {
            $scope.product_map[item.sku] = item;
            itemsProcessed++;
            if(itemsProcessed === $scope.products.length) {                    
                $scope.seriesId = $scope.series_map[$scope.hashTag].seriesID;
                updateProduct($scope.series_map[$scope.hashTag].products[0].sku, $scope.series_map[$scope.hashTag].products[0].image);
            }
        });
 });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню