Javascript 在运行筛选代码之前,确保变量可用

Javascript 在运行筛选代码之前,确保变量可用,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我在run块中设置了一个rootScope变量,如下所示: .run(['$rootScope', 'numbersService', function($rootScope, numbersService) { numbersService.getAvailableCodes().$promise.then(function(data) { $rootScope.availableCodes = data.codes; }); }]); 我需要$rootScope.avail

我在run块中设置了一个rootScope变量,如下所示:

.run(['$rootScope', 'numbersService', function($rootScope, numbersService) {
  numbersService.getAvailableCodes().$promise.then(function(data) {
    $rootScope.availableCodes = data.codes;
  });
}]);
我需要
$rootScope.availableCodes
才能正常运行筛选器。以下是我的筛选代码的开头:

.filter('formatValue', ['$rootScope', function($rootScope) {
  var availableCodes = $rootScope.availableCodes;
  ...

我的问题是,由于
$rootScope.availableCodes
是基于异步调用设置的,因此无法保证在我的筛选器运行时可用(此筛选器在整个HTML中的许多地方都会出现)。在设置
$rootScope.availableCodes
之前,我如何才能等待运行其余的筛选逻辑?

在路由器中复制解析最适合this@charlietfl,因此,将我的run块中的代码移动到每个需要访问它的路由内的解析?是否会有很多路由?@charlietfl,这可能是因为此过滤器在多条路线中使用。为了内置一些“通用解析”功能,我正在寻找这样的答案: