setTimeout 以不同的延迟触发

问题描述 投票:0回答:1

在 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 用法中从未发生过这种行为。

javascript angular settimeout
1个回答
0
投票

我不能确定,但很可能你不在 Angular 区域。使用

NgZone.isInAngularZone()
检查是否是问题,并使用
NgZone.run()

在区域中运行代码
© www.soinside.com 2019 - 2024. All rights reserved.