簡體   English   中英

工廠內承諾,承諾完成前返回

[英]promise inside factory, return before promise is done

我有一個工廠, 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(key); 從控制器$scope.areas變為未定義,我認為這是因為我的工廠在我的承諾完成之前返回undefined

在返回區域列表之前,如何讓工廠等到承諾完成?

從工廠方法返回承諾:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM