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分钟规则)