我试图更好地理解在Angular中使用$ timeout服务作为一种“安全$ apply”方法的细微差别。基本上是在某些代码可以响应Angular事件或非Angular事件(例如jQuery或某些标准DOM事件)的情况下。
据我了解:
- 在$ scope。$ apply中包装代码适用于您尚未处于摘要循环(又称为jQuery事件)的情况,但是如果正在进行摘要,则会引发错误
- 在$ timeout()调用中包装没有延迟参数的代码无论是否已经在摘要周期中都有效
查看Angular源代码,看起来$ timeout调用了$ rootScope。$ apply()。
- 如果摘要周期已经在进行中,为什么$ timeout()也不会引发错误?
- 当您确定摘要尚未进行时,使用$ scope。$ apply()是最佳方法吗?在需要使用任一方法确保其安全性时,是使用$ timeout()吗?
- 是$ timeout()确实是可以接受的“安全应用”,还是有陷阱?
感谢您的任何见解。