Wstrzyknięcie rozwiązanej obietnicy do służby

Muszę uzyskać pewne informacje (schemat) z serwera, zanim skonfiguruję kilka usług zależnych od tych informacji.

Mój serwer udostępnia schemat, który definiuje różne właściwości modelu. W moim kodzie kątowym mam usługę, która otrzymuje ten schemat:

services.factory('schema', function($q, $http) {
    var deferred = $q.defer();
        $http.get('schema/').then(function(response) {
        schema = // some function of response.data
        deferred.resolve(schema);
    }, function() {
        deferred.reject('There was a problem fetching the schema');
    }); 
        return deferred.promise;
});

Chciałbym wstrzyknąć obiekt schematu, a nie obietnicę, do innych usług zależnych od schematu. $ routeProvider pozwala nam to zrobić dla kontrolerów:

app.config(function($routeProvider) {
    $routeProvider.
        when('/', {
            controller: 'SomeCtrl',
            resolve: {
                schema: 'schema'
            },
            ...
        });
});

a to pozwala mi zdefiniować SomeCtrl w ten sposób:

controllers.controller('SomeCtrl', function($scope, schema) {
    // schema is an object
    ...
});

Ale w przypadku usług muszę zrobić:

services.factory('SomeService', function(schema) {
    // schema is a promise
    schema.then(function(schema) {
        ...
    });
});

Czy mogę to zrobić w jakiś sposób?

questionAnswers(2)

yourAnswerToTheQuestion