Здравствуйте. Перенес с контроллера логику загрузки данных в отдельный сервис. в контроллере вызываю
vm.projects= reportsService.initReport( vm.id);
В самом методе initReport такой код
function initReport(id) {
getTimeTypes(isView).then(function(data){
types = data;
})
console.log(types);
return [
types
]
}
Функция для получения типов обрабатывает http-запрос и возвращает ошибку или данные
function getTimeTypes(isView){
return restAPI.getTimeTypes()
.then(
function( data ) {
var temp = [];
temp = parseResponse(data,isView);
if(temp.items && temp.items.length){
return temp.items;
}
}
)
}
В моем случае получается, что в initReport возвращается пустая переменная types (срабатывает return, пропуская инициализацию в then types), не дожидаясь, пока сработает этот блок в методе
getTimeTypes(isView).then(function(data){
types = data;
})
Подскажите, пожалуйста, почему игнорируется данный фрагмент кода, невзирая на наличие в нем then блока ожидания асинхронной операции и почему функция возвращает результат раньше выполнения одной из команд. Спасибо.