fixture.detectChange如何通过Angular zone执行其异步逻辑的
2023-09-14 09:02:58 时间
调试出发点:
在detectChange内部本身有一个ngZone:
接下来会在this.ngZone里执行箭头函数的逻辑,即this._tick():
this.ngZone.run里面调用_inner的run方法:
this._zoneDelegate.invoke:
ZoneDelegate.invoke方法内部, 调用this._invokeZS.onInvoke:
onInvoke:首先onEnter进入Zone:
onEnter方法,修改zone._nesting的层数:
parentZoneDelegate.invoke: 调用callback,Angular单元测试代码里调用fixture.detectChanges, 内部放入zone执行的this._tick():
更多Jerry的原创文章,尽在:“汪子熙”:
相关文章
- [Angular] Two ways to create Angular Animation, using animation() or using state()
- [Angular 2] Writing a Simple Angular 2 Component
- [Angular 8] Take away: Tools for Fast Angular Applications
- [Angular2 Router] Lazy Load Angular 2 Modules with the Router
- SAP UI5和Angular里控制器(Controller)实现逻辑比较
- Angular应用页面里_ngcontent属性的生成逻辑
- Angular 应用要启用 Service Worker 所需满足的一些前提条件
- 关于 Angular 应用 Module 的 forRoot 方法的讨论
- Angular 默认的Change detection策略及缺陷
- Angular Jasmine单元测试用例spec.ts的加载逻辑
- Angular input控件的click事件响应处理的调用上下文
- Angular依赖注入的一个例子和注入原理单步调试
- 使用Angular HTTP client对数据模型进行创建操作