Javascript 工厂内承诺,承诺完成前返回

Javascript 工厂内承诺,承诺完成前返回,javascript,angularjs,Javascript,Angularjs,我有一个工厂,areaFactory在它里面我有: return { GetAreas : function(depKey){ var areaPromise = AppService.getArea(depKey); areaPromise.then(function (Obj){ var areas = Obj['rows']; var areaList = []; angula

我有一个工厂,
areaFactory
在它里面我有:

return {
    GetAreas : function(depKey){
        var areaPromise = AppService.getArea(depKey);
        areaPromise.then(function (Obj){
            var areas = Obj['rows'];
            var areaList = [];

            angular.forEach(areas, function(obj){
                areaList.push({
                    id: obj[0],
                    name: obj[1]
                });
            });

            return areaList;

        });
    }
}
当我调用
$scope.areas=AreaFactory.GetAreas(键)时从控制器
$scope.areas
变得未定义,我想这是因为我的工厂在我的承诺完成之前返回了
未定义的


我怎样才能让工厂等到承诺完成后再返回区域列表

从工厂返回承诺方法:

GetAreas : function(depKey){
        var areaPromise = AppService.getArea(depKey);
        return areaPromise.then(function (Obj){
              ....
        });
}
然后在控制器中:

AreaFactory.GetAreas(key).then(function(list){
    $scope.areas = list;
});

当您返回承诺时,请确保在控制器中处理错误案例。 例如:

AreaFactory.GetAreas(key).then(
  function(list){
    $scope.areas = list;
  },
  function(error) {
    //handle error here
  }
);

感谢您提供快速、可行的解决方案!现在我可以开心地去吃午饭了,回来后我会接受的(7分钟直到我可以接受,因为10分钟规则)