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