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