AngularJS $ http.get然后和成功回调之间的区别

时间:2015-01-17 13:23:59

标签: javascript angularjs

我想了解当通过http get调用时回调和成功回调之间的区别。当我使用然后回调它返回数据,但成功回调它不。以下是代码

然后回调

$http.get(url).
  then(function(response) {
     response.data.data;});

成功回调

$http.get(url).
   success(function(response) {
     response.data;});

2 个答案:

答案 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对象

不推荐使用

* successerror,请参阅$http docs

中的弃用通知部分

答案 1 :(得分:0)

angularjs.org的重要建议:

$ http遗留承诺方法成功与错误已被弃用。请改用标准方法。如果$httpProvider.useLegacyPromiseExtensions设置为false,则这些方法将抛出$ http / legacy错误。