簡體   English   中英

.then沒有定義?

[英].then is not defined?

嘗試從我的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是我得到的錯誤。 有什么辦法嗎?

更新服務並注入$ 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))
});

在這里,代碼將不等待then()內部的返回,而是將在前面執行代碼。 由於找不到任何return語句,因此它將返回undefined。 要在服務函數中解決此問題,您將僅返回promise,因此您的return語句將如下所示

return $http({
           method : "POST",
           url :"url",
           data:{a}
   })

控制器代碼將相同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM