在 Angular 应用程序中的方法内,我需要调用 setTimeout 来解决第 3 方 UI 库的一些布局问题:
setStep(): void {
// This is a workaround to fix the current UI issue.
setTimeout(() => {
const items = document.querySelectorAll('content-slider');
items.forEach((item) => item.layout());
});
this.currentStep = step;
this.isBtnDisabled.set(false);
}
当调用 setTimeout 回调时,它会修复 UI 库故障。
问题在于它的调用有随机延迟:例如有时立即(正如我所期望的,当然以异步方式在队列中分配),但有时在 10 - 50 秒后。在后一种情况下,UI 在随机延迟后更新。
我知道在某些情况下 setTimeout 可以进一步延迟,但没有一个是我们的情况。什么可能导致回调如此随机地触发?在其他 setTimeout 用法中从未发生过这种行为。
我不能确定,但很可能你不在 Angular 区域。使用
NgZone.isInAngularZone()
检查是否是问题,并使用 NgZone.run()
在区域中运行代码