承诺角度 - POST请求

时间:2015-09-21 01:43:33

标签: javascript angularjs asynchronous

我是编程新手,并且想知道为什么你不需要在邮寄请求中提出承诺,但你是在获取请求时做的?

var getAll = function() {
        return $http({
            method: 'GET',
            url: '/api/links'
        }).then(function(resp) {
            return resp.data;
        })
    }

    var addLink = function(link) {
        return $http({
                method: 'POST',
                url: '/api/links',
                data: link
            })
            //you don't need a promise on a POST!
    }

2 个答案:

答案 0 :(得分:3)

好的,$http始终会在GETPOST上返回一个承诺。在您的情况下,您需要对从GET返回的数据执行某些操作,因此您在HTTP请求完成后正确使用promise then()来运行某些代码。

POST中,您似乎并不关心响应,所以您只是选择不做任何事情。出于各种原因,您也可以轻松地将then()添加到POST上。

此外,承诺链,所以then()也返回一个承诺。无论代码调用getAll()addThis(),代码都可以做出承诺。但是,getAll().then(function(data) { ... })的某些内容会将HTTP响应中的数据传递给它,因为你有return resp.data

在这种情况下,执行addThis().then(function(data) { ... })的代码会将整个HTTP响应传递给它,因为在getAll()中没有任何处理方式。

答案 1 :(得分:1)

因为当您<script> var debugel = document.getElementById("edit-field-slideshow-media-type-und-images"); Object.observe(debugel, function(changes) { console.log(changes); debugger; }); </script> 时,您将返回一个通常需要请求等待某种响应的响应。 GET您不一定需要等待回复。作为一个注释,仅仅因为你不需要POST上的承诺并不意味着你不能拥有一个承诺。如果您愿意,可以添加一个。