为什么AngularJS $ http .success可以工作,但是.then不能工作?

蒂莫·恩斯特

我一直在使用以下代码在Angular中进行ajax调用,到目前为止效果还不错:

  function getData (url) {
    var deferred = $q.defer();
    $http.get(url, {
      cache: true
    }).success(function (data) {
      deferred.resolve(data); // works
    });
    return deferred.promise;
  }

如您所见,只有成功处理程序。当我想添加一个错误处理程序时,我注意到文档指出了,success并且error已被弃用,不应再使用(https://docs.angularjs.org/api/ng/service/ $ http)。而是.then应使用Promise,因此我将代码更改为:

  function getData (url) {
    var deferred = $q.defer();
    $http.get(url, {
      cache: true
    }).then(function (data) {
      deferred.resolve(data); // Not called :(
    }, function () {
      deferred.resolve(false); // Not called :(
    });
    return deferred.promise;
  }

现在一切都停止了。.then从来没有被调用。为什么?我正在使用最新的Angular 1.4版本

蒂莫·恩斯特

好的,我发现了问题。实际上,有两个问题。

首先,我有一个多余的承诺已被删除:

  function getData (url) {
    return $http.get(url, {cache: true});
  }

其次,从中返回的数据.then似乎与有所不同.success它不返回简单的结果数据,而是返回一个带有一些调用中的元数据的对象。因此,为了获取数据,我必须访问data.data

  pub.getList = function () {
    return getData(serviceurl + "?c=latest").then(function (result) {
      var list = result.data;
      precacheArticles(list);
      return list;
    });
  };

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么git://可以工作但是git @不能

来自分类Dev

为什么`gem install`可以工作,但是`bundle install`不能工作

来自分类Dev

为什么String.Format可以工作但是SqlCommand.Parameters.Add不能工作?

来自分类Dev

为什么我的checkall函数可以工作,但是uncheckall函数不能正常工作

来自分类Dev

为什么`gem install`可以工作,但是`bundle install`不能工作

来自分类Dev

为什么JavaBridge可以工作但是JavaBridgeTemplate621不能工作

来自分类Dev

为什么`。/ file.py`可以工作,但是`bash file.py`不能工作?

来自分类Dev

使用OpenVPN时无法检索http站点,但是https站点可以正常工作。为什么?

来自分类Dev

为什么不能#Include 工作?

来自分类Dev

为什么不能在angularJs ng模式中工作?

来自分类Dev

为什么FileType可以工作而BufRead,BufNewFile不能工作-VIM?

来自分类Dev

为什么PHP Sessions Memcached可以工作,但Memcache不能工作?

来自分类Dev

为什么PHP Sessions Memcached可以工作,但Memcache不能工作?

来自分类Dev

指令模型不能通过 http angularjs 工作

来自分类Dev

为什么printf()可以在内核中工作,但是不能使用std :: cout呢?

来自分类Dev

为什么在makefile的末尾使用+ =不能工作,但是一开始可以使用?

来自分类Dev

为什么{{#each}}不能正常工作而{{#with}}不能正常工作?

来自分类Dev

发现-exec不能正常工作,为什么?

来自分类Dev

为什么该查询不能正常工作?

来自分类Dev

为什么CSS Clear不能正常工作?

来自分类Dev

为什么“ if else语句”不能正常工作?

来自分类Dev

为什么setInterval函数不能正常工作?

来自分类Dev

为什么@Resource在HttpServlet中不能工作?

来自分类Dev

发现-exec不能正常工作,为什么?

来自分类Dev

为什么我不能参加这项工作?

来自分类Dev

为什么这个查询不能正常工作?

来自分类Dev

为什么“租金”方法不能正常工作?

来自分类Dev

为什么这行代码不能正常工作?

来自分类Dev

为什么自动收缩不能正常工作?

Related 相关文章

  1. 1

    为什么git://可以工作但是git @不能

  2. 2

    为什么`gem install`可以工作,但是`bundle install`不能工作

  3. 3

    为什么String.Format可以工作但是SqlCommand.Parameters.Add不能工作?

  4. 4

    为什么我的checkall函数可以工作,但是uncheckall函数不能正常工作

  5. 5

    为什么`gem install`可以工作,但是`bundle install`不能工作

  6. 6

    为什么JavaBridge可以工作但是JavaBridgeTemplate621不能工作

  7. 7

    为什么`。/ file.py`可以工作,但是`bash file.py`不能工作?

  8. 8

    使用OpenVPN时无法检索http站点,但是https站点可以正常工作。为什么?

  9. 9

    为什么不能#Include 工作?

  10. 10

    为什么不能在angularJs ng模式中工作?

  11. 11

    为什么FileType可以工作而BufRead,BufNewFile不能工作-VIM?

  12. 12

    为什么PHP Sessions Memcached可以工作,但Memcache不能工作?

  13. 13

    为什么PHP Sessions Memcached可以工作,但Memcache不能工作?

  14. 14

    指令模型不能通过 http angularjs 工作

  15. 15

    为什么printf()可以在内核中工作,但是不能使用std :: cout呢?

  16. 16

    为什么在makefile的末尾使用+ =不能工作,但是一开始可以使用?

  17. 17

    为什么{{#each}}不能正常工作而{{#with}}不能正常工作?

  18. 18

    发现-exec不能正常工作,为什么?

  19. 19

    为什么该查询不能正常工作?

  20. 20

    为什么CSS Clear不能正常工作?

  21. 21

    为什么“ if else语句”不能正常工作?

  22. 22

    为什么setInterval函数不能正常工作?

  23. 23

    为什么@Resource在HttpServlet中不能工作?

  24. 24

    发现-exec不能正常工作,为什么?

  25. 25

    为什么我不能参加这项工作?

  26. 26

    为什么这个查询不能正常工作?

  27. 27

    为什么“租金”方法不能正常工作?

  28. 28

    为什么这行代码不能正常工作?

  29. 29

    为什么自动收缩不能正常工作?

热门标签

归档