2016-07-24 3 views
0

не возвращается В моей функции распознавателя У меня есть цикл, который называют HTTP службы в каждом itaration:функция Резольвер ничего

function detailedReportDataResolver($stateParams, reportService) { 
    var promises = []; 
    var frequenciesArr = $stateParams.frequencies.split(',').map(function (item) { return parseInt(item, 10); }); 

    angular.forEach(frequenciesArr, function (freq, key) { 
     reportService.getDetailsReport($stateParams.clientId, $stateParams.date, freq).then(function (result) { 
      promises.push(result.data); 
     }); 
    }); 
    return $q.all(promises);   
} 

Вот как я вызываю функцию распознавателя в моем модуле:

resolve: { 
    detailedReportData: ["$stateParams", "reportService", detailedReportDataResolver] 
     } 

Вот сервис:

(function() { 
    "use strict"; 

    angular.module("reportBuilder").factory("reportService", ["$http", "config", reportService]); 

    function reportService($http, config) { 
     var serviceUrl = config.baseUrl + "api/Reports/"; 
     var service = { 
      getDetailsReport: detailsReport 
     }; 

     return service; 


     function detailsReport(clientId, date, frequencies) { 

      if (!date && !clientId) return null; 
      return $http.get(serviceUrl + "ReportDetailed/" + clientId + "/" + date + "/" + frequencies); 
     } 

    } 
})(); 

Мне нужно дождаться окончания обслуживания http до начала следующей итерации цикла и t он возвращает результат. Для этой цели я использую $q.all в разрешении, указанном выше.

Но функция resolver ничего не возвращает. Любая идея, что я делаю неправильно? Почему функция resolver ничего не возвращает?

ответ

0

Массив обещаний составлен неправильно. Вы можете попробовать:

function detailedReportDataResolver($stateParams, reportService) { 
    var promises = []; 
    var frequenciesArr = $stateParams.frequencies.split(',').map(function (item) { return parseInt(item, 10); }); 

    angular.forEach(frequenciesArr, function (freq, key) { 
     var promise = reportService.getDetailsReport($stateParams.clientId, $stateParams.date, freq).then(function (result) { 
      return result.data; 
     }); 
     promises.push(promise); 
    }); 
    return $q.all(promises);   
} 
+0

спасибо я судимое свой путь, но до сих пор эта функция не возвращает данные fatched по HTTP servicve – Michael

+0

, кстати, я не получаю никаких ошибок – Michael

Смежные вопросы