尽管在区域外运行超时,但Chrome DevTools中的NgZone超时警告仍然存在

时间:2017-11-09 10:38:23

标签: javascript angular timeout google-chrome-devtools angular2-changedetection

您仍然可以在Chrome DevTools中收到警告

[Violation] 'setTimeout' handler took 103ms zone.js:1894

即使你在ngzone之外运行所有超时?我是这样做的:

this.zone.runOutsideAngular(() => {
    this._timeout = setTimeout(() => {
    // ...
    });
});

并清除现有的超时onDestroy(Angular)

1 个答案:

答案 0 :(得分:2)

setTimeout在Angular之外运行的事实并不意味着它在区域之外运行。

the reference所述,

  

在Angular的父区域中同步执行fn函数,并返回函数返回的值。

     

通过runOutsideAngular运行函数允许您转义Angular的区域并执行不会触发Angular更改检测的工作或受Angular错误处理的影响。

因此预计setTimeout仍在区域内运行。