Я использую угловую фабрику с вызовом $ http.get, чтобы вернуть объект обещания со всеми автобусами и их свойствами депо и области.
Я столкнулся с классическими проблемами асинхронного запроса с последующим кодом. Console.log (allBuses) возвращает пустой объект до того, как console.log (depot) вернет имена депо во вложенной функции $ http.get.
Без использования методов setInterval или Timeout, как мне разрешить объект allBuses после того, как все шины присвоены свойствам депо и области?
.factory('busesByDepot', ['$http', 'Camelize', function($http, Camelize){
// get all depot data from depots object
return $http.get('data/depotList.json').success(function(data) {
allBuses = {};
data.data.forEach(function(depot){
var camelName = Camelize.strToCamel(depot.name);
if(depot.active == true){
$http.get('data/'+ camelName +'.json').success(function(data) {
data.forEach(function(d){
allBuses[d.num] = {depot: camelName, area: d.area};
})
console.log(depot);
})
}
})
console.log(allBuses);
});
}])
я удалил мой ответ, так как я не видел внешний 'forEach' –
первое решение, которое приходит на ум создает обещание и его решения после завершения Foreach –