AngularJS: Асинхронно инициализировать фильтр

У меня возникли проблемы при попытке инициализировать фильтр с асинхронными данными.

Фильтр очень прост, ему нужно преобразовать пути в имя, но для этого ему нужен массив соответствий, который мне нужно получить с сервера.

Я мог бы сделать что-то в определении фильтра, прежде чем возвращать функцию, но асинхронный аспект предотвращает это

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

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

Использование обещания может быть целесообразным, но у меня нет четкого понимания того, как угловые нагрузки фильтруют. ЭтотПочта объясняет, как добиться такого волшебства с помощью сервисов, но возможно ли сделать то же самое для фильтров?

И если у кого-то есть лучшее представление о том, как переводить эти пути, я весь в ушах.

РЕДАКТИРОВАТЬ:

Я попытался с обещанием приблизиться, но что-то не так, и я не вижу, что:

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

Я не очень знаком с обещаниями, это правильный способ их использовать?

Ответы на вопрос(2)

Ваш ответ на вопрос