У меня проблема с моим кодом, и я не могу понять, почему это происходит или решение проблемы. Моя проблема - вызов функции 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);
}
});
});
в порядке,
Кто-то отправил комментарий, а затем удалил этот комментарий. Прежде всего, спасибо за ваш комментарий, поскольку это было полезно для решения моей дилеммы. У меня есть 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);
}
});
});