javascript - $timeout inside will loop 创建无限循环

标签 javascript angularjs settimeout splice

我似乎无法让超时和循环一起工作。如果我删除循环它会工作,或者如果我删除超时它会工作。我将一起得到一个无限循环,如果超时函数在 while 循环内部,它似乎不会运行。

如有任何帮助,我们将不胜感激!

function doTask (list) {
    if (list) {
        while (list.length > 0) {  
            (function(list){
                $timeout(function() {   
                   list.splice(0, 1); 
                   console.log("timeout...") 
                }, 5000); 
            })(list); 
        }
    }
}

最佳答案

你应该使用递归来循环。此外,您应该检查 list.length,因为 [] 是一个真值。

function doTask(list) {
  if (list.length) {
    setTimeout(function() {
      list.splice(0, 1);
      console.log("timeout...")
      doTask(list);
    }, 500);
  }
}
var list = [1,2,3,4,5]
doTask(list);

关于javascript - $timeout inside will loop 创建无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40756767/

相关文章:

javascript - iPhone 的 jQuery 动态背景位置

javascript - 创建一个空范围?

angularjs - AngularJS 组件模式绑定(bind)有特定的命名格式吗?

javascript - "puff of smoke"效果javascript Sprite 动画

javascript - 为什么 jquery fadeOut 与 setTimeout 的行为很奇怪?

javascript - 在reactjs中使用setTimeout连续改变状态

javascript - 处理整个 For 循环后发出嵌套 HTML5 Web SQL 查询

javascript - 在reactjs中从父组件调用并将参数传递给子组件的函数

css - 格式化div中的垂直文本

angularjs - 尽管 ui-route 和提供程序似乎工作正常,但我无法在 angularjs 中加载 View ...这是一段代码