[英]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.