angularjs - Angular : why isn't $evalAsync called $applyAsync?

标签 angularjs asynchronous definition angularjs-digest

关于范围的 Angular 初学者问题( docs here )。

  • $eval在作用域的上下文中执行表达式。
  • $apply基本上是打电话$eval然后 $digest .
  • 为什么$evalAsync调用 $digest也是(或者,更准确地说,确保 $digest 被调用)?

  • 好像是$ eval Async真的应该叫$ apply Async ,不是吗?

    我是初学者 - 我错过了什么?

    最佳答案

    $evalAsync$applyAsync针对不同的情况。

    $evalAsync : 将表达式推迟到 当前摘要周期的下一个循环迭代 .一个 Angular 摘要循环循环几次,直到没有数据是脏的。如果没有摘要循环正在进行,它将开始一个新的摘要循环(调用 $apply 方法)并评估其中的表达式(调用 $eval 方法)。如果您在 Angular 作用域之外调用函数,但在消化周期已经在进行中时仍想消化脏数据,则此方法很有用,在这种情况下,您无法调用 $apply .

    $applyAsync : 将表达式推迟到 下一周期摘要 .它总是在计算表达式后开始一个新的摘要循环(调用 $apply 方法)。如果您经常在具有脏范围数据的 Angular 范围外执行一些服务回调(如 $http 服务),则此方法很有用。但是,如果它为每个回调启动摘要,则可能会出现性能不佳的情况。因此,该方法通过在多个异步回调之间共享摘要周期来优化流程,其性能优于方法 $evalAsync .

    关于angularjs - Angular : why isn't $evalAsync called $applyAsync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21471355/

    相关文章:

    node.js - Axios 响应循环通过函数仅返回第一个映射对象的结果

    definition - 什么是多态,简单解释一下?

    c - 取消初始化整数指针的赋值

    c++ - `GamepadControll::GamepadControll()'的多重定义

    angularjs - 构建 RequireJS + AngularJS

    javascript - 如何在 `protractor` 中定位动态元素

    javascript - 引用错误: jurusan is not defined in Angular with Nodejs

    javascript - 在 AngularJS 中保存模型的静态副本

    asynchronous - 将数据从 BigQuery 导出到 GCS - 可以部分传输吗?

    ios - 在 ibaction 后触发 segue