【发布时间】:2019-01-30 01:59:06
【问题描述】:
我有一个在服务中调用函数的控制器。这反过来又在同一个服务中调用了一个 promise 函数。
问题是我无法在控制器中获取返回值。
控制器:
function mainFunctionInControlelr() {
some code here...
vm.evtHTTPFactory.getData() // calling the service
.then(function(response) {
console.log("the returned value is " + response.myReturned );
});
}
服务:
factory.getData = function(parm) {
return factory.getABC(parm); // calling another method in the same service
};
factory.getABC = function(parm) {
return $q(function(resolve, reject) {
$http.get(PltConfig.APIPath + '/v1/............', {
params: { inputParm: parm }
})
.success(function (response) {
resolve(response.data.myReturned);
return;
} )
});
};
问题是服务内部的 getData 正在调用服务内部的 getABC。在这个过程中丢失了一些东西。我需要在控制器中有“myReturned”。
我需要在 getData 中(在服务中)放入什么才能使事情正常进行?
非常感谢。
【问题讨论】:
-
为了在 promise 上调用
.then(从控制器内部),服务函数必须返回 promise 本身。看起来您的服务代码有点偏离 - 更新它以返回承诺本身,而不是.success中的响应。 docs.angularjs.org/api/ng/service/$q#$q-returns