如何在角度加载状态时解决多个承诺?

时间:2015-02-13 19:09:15

标签: javascript angularjs

我正在加载一个/ home状态,我想从数据库中获取所有用户,这样我就可以根据用户的登录情况操作家庭控制器并进行查看。目前我正抓住所有“帖子”在我的:数据库中的状态配置的解析部分。但是,我无法弄清楚如何一次实现多个承诺。

这是我的/ home

的州代码
  $stateProvider
.state('home', {
  url: '/home',
  templateUrl: '/home.html',
  controller: 'MainCtrl',
  resolve: {
    postPromise: ['posts', function(posts){
      return posts.getAll();
      // I want to resolve more than one promise here.  
    }]
  }
}) 

基本上我只想在解决/ home状态期间运行users.getAll()。我无法弄清楚这样做的语法。

1 个答案:

答案 0 :(得分:1)

只需在状态配置中添加第二个解析:

$stateProvider
.state('home', {
  url: '/home',
  templateUrl: '/home.html',
  controller: 'MainCtrl',
  resolve: {
    postPromise: ['posts', function(posts){
      return posts.getAll();
      // I want to resolve more than one promise here.  
    }],
    userPromise: ['users', function(users){
      return users.getAll();
    }]
  }
}) 

或者,作为替代方法,使用$ q.all([userPromise,postsPromise]):这将为您提供一个解析,只要数组中的所有promise都被解析,并且作为值,您将获得一个包含数组的数组数组中每个promise的结果。