我似乎无法让超时和循环一起工作。如果我删除循环它会工作,或者如果我删除超时它会工作。我将一起得到一个无限循环,如果超时函数在 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/