我是编程新手,并且想知道为什么你不需要在邮寄请求中提出承诺,但你是在获取请求时做的?
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!
}
答案 0 :(得分:3)
好的,$http
始终会在GET
和POST
上返回一个承诺。在您的情况下,您需要对从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
上的承诺并不意味着你不能拥有一个承诺。如果您愿意,可以添加一个。