AngularJS: Asynchronicznie inicjalizuj filtr

Mam problem z próbą zainicjowania filtru z danymi asynchronicznymi.

Filtr jest bardzo prosty, musi przetłumaczyć ścieżki na nazwę, ale aby to zrobić, potrzebuje tablicy korespondencji, którą muszę pobrać z serwera.

Mogę robić rzeczy w definicji filtra, przed zwróceniem funkcji, ale aspekt asynchroniczny tego uniemożliwia

angular.module('angularApp').
  filter('pathToName', function(Service){
    // Do some things here

    return function(input){
      return input+'!'
    }
  }

Korzystanie z obietnicy może być opłacalne, ale nie mam jasnego zrozumienia, w jaki sposób filtry obciążeń kątowych. Tosłupek wyjaśnia, jak osiągnąć taką magię za pomocą usług, ale czy można zrobić to samo dla filtrów?

A jeśli ktoś ma lepszy pomysł na to, jak przetłumaczyć te ścieżki, wszyscy mam uszy.

EDYTOWAĆ:

Próbowałem z obietnicą, ale coś jest nie tak i nie rozumiem, co:

angular.module('angularApp').filter('pathToName', function($q, Service){

  var deferred = $q.defer();
  var promise = deferred.promise;

  Service.getCorresp().then(function(success){
    deferred.resolve(success.data);
  }, function(error){
    deferred.reject();
  });

  return function(input){
    return promise.then(
      function(corresp){
        if(corresp.hasOwnProperty(input))
          return corresp[input];
        else
          return input;
      }
    )
  };
});

Nie znam się na obietnicach, czy jest to właściwy sposób na ich wykorzystanie?

questionAnswers(2)

yourAnswerToTheQuestion