У меня похожая ситуация, как в AngularJS: Инициализировать службу с асинхронными данными , но мне нужно внедрить мою базовую службу с асинхронными данными в зависимые службы. Выглядит это так:
Базовый сервис:
angular.module('my.app').factory('baseService', baseService);
baseService.$inject = ['$http'];
function baseService($http) {
var myData = null;
var promise = $http.get('api/getMyData').success(function (data) {
myData = data;
});
return {
promise: promise,
getData: function() {
return myData;
}};
}
Зависимый сервис (в который я внедряю базовый сервис)
angular.module('my.app').factory('depentService', depentService);
depentService.$inject = ['baseService'];
function depentService(baseService) {
var myData = baseService.getData();
....
return {...};
}
Маршрут:
angular.module('my.app', ["ngRoute"])
.config(function ($routeProvider) {
$routeProvider.when('/',
{
resolve: {
'baseService': function (baseService) {
return baseService.promise;
}
}
});
});
Но ничего не происходит, baseService.getData()
по-прежнему возвращает ноль (coz asyn c вызов API все еще выполняется). Похоже, моя конфигурация ngRoute недействительна, но я не могу указать какой-либо контроллер / шаблон в нее. Как правильно разрешить свой baseService и получить данные в службе Depend?