【发布时间】: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