在 angularJs 中使用动态值进行$interval延迟

Using Dynamic Values For $interval Delay In angularJs

本文关键字:interval 延迟 动态 angularJs      更新时间:2023-09-26

我想对间隔使用动态延迟:

var tabDelay = 1500;
var timer = $interval(function() {
    if (some if) {
            tabDelay = 5000;
        } else {
            tabDelay = 1000;
        }
    }
},tabDelay);

但似乎这不是正确的方法。如何在 angularJs 中使用动态值来$interval延迟?

考虑使用$timeout,因为我认为您无法更改间隔的持续时间

我个人建议经常$timeout。

此方法的主要优点是,如果内部有异步方法,则可以等待该异步发生,然后触发另一个超时。这在池化不同的数据集时特别有用。

var delay = 500, clearTimeout, stop = false;
function doLoad (stop) {
  if (x) {
    delay = 1000;
  } else {
    delay = 500;
  }
  if (myCondition) {
    stop = true;
  }
  // do stuff
  if (stop) {
    if (clearTimeout) {
      $timeout.cancel(clearTimeout);
    }
  } else {
    clearTimeout = $timeout(doLoad, delay);
  }
}

doLoad(delay);

这是一种选择吗?角度材质有哪些约束?