我想了解当通过http get调用时回调和成功回调之间的区别。当我使用然后回调它返回数据,但成功回调它不。以下是代码
然后回调
$http.get(url).
then(function(response) {
response.data.data;});
成功回调
$http.get(url).
success(function(response) {
response.data;});
答案 0 :(得分:6)
您的问题似乎就是这个问题:
$ http.get(' / someUrl&#39)。成功(功能(数据,状态,标题, config){
它与then
,
注册回调的的对象
then
方法,这些回调将被接收 单个参数 - 表示响应
换句话说,你应该这样做:
$http.get(...).success(function(data){ console.log(data) })
$http.get(...).then(function(response){ console.log(response.data) })
当然还有链接差异,但似乎与您的问题无关:
then()
如果链接then()
,回调将在每个回调完成后按顺序运行,因为它会在每个链上返回一个新的promise对象
success()
(已弃用*以及error()
)如果您链接success()
次调用,则回调将在 parallel 中运行,因为它会返回原始的promise对象
* success
和error
,请参阅$http docs
答案 1 :(得分:0)
angularjs.org的重要建议:
$ http遗留承诺方法成功与错误已被弃用。请改用标准方法。如果$httpProvider.useLegacyPromiseExtensions
设置为false,则这些方法将抛出$ http / legacy错误。