当尝试从我的服务中获得响应时,出现了此错误,我在其中发出了Ajax呼叫!我希望控制器代码延迟,这就是为什么我要从服务中返回承诺。但是我遇到.then of undefined
错误。
这是代码
app.service('abc', function(){
var function() {
return $http({method : "POST",
url :"url",
data:{
a}
}).then(function mySuccess(response) {
return response;
})
}
});
在控制器中
var promise=servicename.functionname();
promise.then(res)
{}
.then undefined
是我得到的错误。有解决办法吗?
答案 0 :(得分:2)
更新服务并注入$ http
app.service('abc', function ($http) {
this.functionName = function (data) {
return $http({
method: "POST",
url: "url",
data: data
}).then(function mySuccess(response) {
return response.data;
})
};
});
控制器
app.controller('myController', function (abc) {
abc.functionName({
a: 'a'
}).then((data) => console.log(data))
});
答案 1 :(得分:0)
此处,代码将不等待then()内部的返回,而是将提前执行代码。由于找不到任何return语句,因此它将返回undefined。 要在服务功能中解决此问题,您将只返回承诺 因此您的return语句将如下所示:
return $http({
method : "POST",
url :"url",
data:{a}
})
控制器代码将相同