你
仍然在Chrome DevTools中收到警告是正常的吗
[Violation] 'setTimeout' handler took 103ms zone.js:1894
即使您在 ngzone 之外运行所有超时?我是这样做的:
this.zone.runOutsideAngular(() => {
this._timeout = setTimeout(() => {
// ...
});
});
并清除现有超时销毁(角度)
setTimeout
运行在 Angular 之外的事实并不意味着它运行在区域之外。
如参考资料所述,
在 Angular 的父区域中同步执行 fn 函数,并返回函数返回的值。
通过runOutsideAngular运行函数可以让你逃离Angular的区域,并做一些不会触发Angular变化检测或受到Angular错误处理的工作。
因此,预计setTimeout
仍然在一个区域内运行。