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

时间:2016-01-21 13:58:59

标签: javascript angularjs

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

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

            tabDelay = 5000;

        } else {

            tabDelay = 1000;

        }
    }
},tabDelay);

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

2 个答案:

答案 0 :(得分:3)

考虑使用$timeout因为我不相信你可以改变间隔的持续时间

答案 1 :(得分:0)

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

这是一个选择吗? Angular Material的限制是什么?