Javascript 在angularJs中使用$interval Delay的动态值

Javascript 在angularJs中使用$interval Delay的动态值,javascript,angularjs,Javascript,Angularjs,我想对间隔使用动态延迟: var tabDelay = 1500; var timer = $interval(function() { if (some if) { tabDelay = 5000; } else { tabDelay = 1000; } } },tabDelay); 但这似乎不是正确的方式。如何在angularJs中使用$interval delay的动态值?考虑使用,因

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

var tabDelay = 1500;
var timer = $interval(function() {
    if (some if) {

            tabDelay = 5000;

        } else {

            tabDelay = 1000;

        }
    }
},tabDelay);

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

考虑使用,因为我不相信您可以更改间隔的持续时间

考虑使用,因为我不相信您可以更改间隔的持续时间

我个人建议重复使用$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);

这是一种选择吗?角材料的约束条件是什么

我个人建议重复$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);

这是一种选择吗?角材料的约束条件是什么

但我必须在“角度材质”选项卡(如滑块)中使用它:@TheNone Interval使用timeout实现起来很简单,但它可以为您提供一些灵活性,如更改超时时间。@TheNone您可以使用这样的示例清除间隔并重设它(在您的示例中,您可以使用
$Interval.cancel(timer));
但我必须在“角度材质”选项卡(如滑块)中使用它:@TheNone Interval使用timeout实现起来很简单,但它给了您一些灵活性,比如更改超时时间。@TheNone您可以使用这样的示例清除间隔并重置它(在您的情况下,您可以使用
$Interval.cancel(timer))
材质中没有任何约束。但是在我的示例中,上面的代码不起作用。上面的代码是“伪代码”-您必须自己实现。输出是什么?我知道:)我在这种情况下使用了递归函数。材质中没有任何约束。但是在我的示例中,上面的代码不起作用。上面的代码是“伪代码”-您必须自己实现。输出是什么?我知道:)我在这种情况下使用了递归函数。