gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:59:44 25 4
gpt4 key购买 nike

关于范围的 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com