如何等待承诺在继续之前获取数据

时间:2015-07-09 09:45:55

标签: angularjs promise

vm.education = common.dataservice.getAllEducations(currentUser.id); 
vm.education.$promise.then(function(data){                          
     console.log(data);                                               
});

[a bunch of code that also utilizes vm.education]

我在controller.js文件中的angularJS中有上面的代码。我的问题是如何在继续执行其余代码之前等待common.dataservice.getAllEducations的返回?

如果我不等待获取数据的完成,那么引用vm.education的代码将为null。

1 个答案:

答案 0 :(得分:1)

这可以通过$routeProvider的resolve属性来实现。这会延迟控制器,直到所有值都已解决。

您可以使用

中的内容
angular.module('myApp', [])
  .config(['$routeProvider', function($routeProvider) {
    $routeProvider.
      when('/education', { 
        controller: ['$scope', 'education', function($scope, education) {
          ...
          vm.education = education;
        }, 
        resolve: {
          education: ['common', 'currentUser', function(common, currentUser) {
            return common.dataservice.getAllEducations(currentUser.id)
              .then(function(response) {
                return response.data;
              });
        }
      });
  }]);