gpt4 book ai didi

javascript - Angular 5中 "tick"是什么意思

转载 作者:太空狗 更新时间:2023-10-29 17:51:26 26 4
gpt4 key购买 nike

我在学习 Angular 5 的同时学习了我遇到的组件交互部分

// Redefine `seconds()` to get from the `CountdownTimerComponent.seconds` ...
// but wait a tick first to avoid one-time devMode
// unidirectional-data-flow-violation error
setTimeout(() => this.seconds = () => this.timerComponent.seconds, 0);

我浏览了文档,也在网上尝试找到关于这个主题的没有明确的解释。有人可以解释一下吗

  1. 这是什么记号?
  2. 我们为什么需要它??
  3. 什么是单向数据流违规错误?
  4. settimeout 如何阻止它?
  5. 还有其他方法可以防止吗??

最佳答案

1) tick 只是将任务(函数的执行)添加到浏览器的事件队列中,用于延迟(异步)执行而不是同步执行。

2) 允许浏览器在执行新代码之前执行事件队列中待处理的任务。

3) 一些异步执行更新了模型,Angular 识别出异步执行已完成并运行变更检测。变更检测本身会导致模型发生变化(例如, View 绑定(bind)中使用的属性或函数正在修改模型)。该模型只允许在某些异步执行期间修改,但不允许在更改检测期间修改。

4) 通过将代码执行添加到浏览器事件队列而不是立即执行,它允许完成更改检测,然后当浏览器执行我们放入队列中的任务时,仅在异步执行中更新模型设置超时

5) ChangeDetectorRef.detectChanges() 在模型更新后强制执行另一个更改检测轮,这通常可以防止错误。

关于javascript - Angular 5中 "tick"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48984060/

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