【问题标题】:Angular JS Code Running Before It Is Supposed To SometimesAngular JS 代码有时会在它应该运行之前运行
【发布时间】:2016-10-13 16:16:57
【问题描述】:

我的代码有问题,无法想出为什么会发生这种情况或解决方案。我的问题是代码末尾的 updateProduct() 函数调用在 forEach 语句甚至开始 10 个页面加载中的一个之前被调用。我不明白它为什么这样做。有谁知道会导致这种情况的原因以及防止这种情况发生的解决方案是什么?

我尝试过使用 promise,并且成功加载了大约 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);
            }
        });
    });

【问题讨论】:

  • 感谢您的回复。无论哪种方式都有效。当使用 angular.forEach 时,它似乎中断了大约 50% 的时间,当我使用 javascript forEach 时,它似乎只中断了大约 10% 的时间。似乎有角度的做事方式比无角度的方式更容易中断。我想知道是否存在某种缓存错误。

标签: javascript angularjs for-loop rendering


【解决方案1】:

好的,

有人发表了评论,然后删除了该评论。首先,感谢您的评论,因为它有助于解决我的困境。我有 2 个 http.get 函数,我需要在 for 循环结束之前完成每个函数。发生的事情是我的第一个 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);
            }
        });
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    相关资源
    最近更新 更多