zl程序教程

您现在的位置是:首页 >  前端

当前栏目

fixture.detectChange如何通过Angular zone执行其异步逻辑的

Angular逻辑执行异步 如何 通过 zone fixture
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的原创文章,尽在:“汪子熙”: