gpt4 book ai didi

javascript - AngularJS:你能从多个 $scope.$apply() 调用中得到 'digest in progress' 错误吗?

转载 作者:行者123 更新时间:2023-11-30 17:53:36 27 4
gpt4 key购买 nike

在一个可能有很大作用域的大型应用程序中,如果您快速连续多次调用 $scope.$apply,您会得到“作用域已经在进行中”的错误吗?

例如,我有一个链接到 bootstrap switch 的指令插入。该指令仅显示一个开/关开关,用户可以单击该开关将 bool 值切换为真/假。每次用户单击此按钮时,我的指令都会执行一个 $scope.$apply(),其中一个范围变量会更改以反射(reflect)开关的新状态(打开或关闭)。

我担心如果用户快速连续点击开关,我可能会收到“摘要已在进行中”的错误。然而,情况并非如此,尽管多次 $scope.$apply() 调用被触发,但每次都非常顺利并且范围值随处更新。

这是因为 $scope.$apply 以某种方式进行了优化,因此它不会运行完整的摘要,而只会更新那些已更改的值,或者仅仅是因为我的范围相对较小目前,完整的摘要不会花很长时间运行?

最佳答案

Javascript 是单线程的。每次调用 $apply() 都会同步运行。获得该错误的唯一方法是从已在 Angular 上下文中调用的函数中调用 $apply()。

我有多个大块显示/隐藏 block 的数组,没有问题。 Javascript 和 Angular 非常优化。

关于javascript - AngularJS:你能从多个 $scope.$apply() 调用中得到 'digest in progress' 错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473500/

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