【问题标题】:AngularJS: Why does $http not actually make a http request until you leave the current digest?AngularJS:为什么在您离开当前摘要之前,$http 不会真正发出 http 请求?
【发布时间】:2014-01-11 05:52:52
【问题描述】:

$http 的 AngularJS 文档http://docs.angularjs.org/api/ng.$http 声明“$http 服务在执行下一个 $digest() 之前不会真正发送请求。”。

我只是想知道为什么它不立即发出 HTTP 请求?这似乎是一个不必要的要求,我想知道我错过了什么。

更新:建议这是必要的,因为完成处理程序将需要更新摘要。但是,无论哪种方式,这些完成事件都需要稍后进行自己的 $apply/$digest 调用。

【问题讨论】:

  • 也许你觉得这篇博文很有趣:benlesh.com/2013/08/angularjs-watch-digest-and-apply-oh-my.html 我猜它回答了你的问题。
  • 在角度上下文之外调用 http 时确实如此,但我认为在正常情况下不会
  • 阿杰是对的。您提到的那一行位于标题为“从 AngularJS 外部调用 $http”的部分中。我不知道在角度 digest 循环之外发生的任何角度问题。如果您在 digest 内提出请求,它会“立即”发生。
  • 但是为什么会有这种特殊行为呢?在任何情况下,为什么不直接发出 HTTP 请求?
  • 我认为这是为了确保使用正确的数据而不是您“认为”的数据发出请求。

标签: angularjs


【解决方案1】:

这实际上是因为 $http 是基于 promise 的。完整解释在这里:https://github.com/angular/angular.js/issues/2794#issuecomment-18807158

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 2010-12-11
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多