AngularJS: Filter asynchron initialisieren

Ich habe Probleme beim Versuch, einen Filter mit asynchronen Daten zu initialisieren.

Der Filter ist sehr einfach. Er muss Pfade in Namen übersetzen, benötigt jedoch ein Korrespondenz-Array, das ich vom Server abrufen muss.

Ich könnte Dinge in der Filterdefinition tun, bevor ich die Funktion zurückgebe, aber der asynchrone Aspekt verhindert dies

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

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

Die Verwendung eines Versprechens ist möglicherweise sinnvoll, aber ich verstehe nicht genau, wie die Winkelbelastung filtert. DiesePost erklärt, wie man solche Magie mit Diensten erzielt, aber ist es möglich, dasselbe für Filter zu tun?

Und wenn jemand eine bessere Idee hat, wie man diese Pfade übersetzt, bin ich ganz Ohr.

BEARBEITEN:

Ich habe es mit dem Versprechen versucht, aber etwas stimmt nicht, und ich verstehe nicht, was:

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;
      }
    )
  };
});

Ich bin nicht wirklich vertraut mit Versprechungen, ist es der richtige Weg, sie zu nutzen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage