.then没有定义?

时间:2018-07-23 10:00:05

标签: javascript angularjs

当尝试从我的服务中获得响应时,出现了此错误,我在其中发出了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是我得到的错误。有解决办法吗?

2 个答案:

答案 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}
   })

控制器代码将相同