【发布时间】:2020-08-03 03:12:46
【问题描述】:
我正在尝试创建一个定时循环,该循环遍历对象数组并根据每个对象中的键:值运行计时器。为简单起见,我只在函数中调用了控制台日志。 我需要执行的步骤是:
- 计时器在被调用时记录列表中的第一项
- 然后计时器从第一项时间的值开始以秒为单位记录倒计时,并每秒记录新时间。
- 当时间到达 0 时,有一个等于等待变量的倒计时。
- 记录下一个项目,然后重复倒计时和等待步骤,然后循环移动到列表中的下一个项目。
这是没有任何计时器的代码:
const list = [{
item: 'Item 1',
time: 30
},
{
item: 'Item 2',
time: 25
},
{
item: 'Item 3',
time: 40
}
];
const wait = 5;
function logger(input, suffix) {
console.log(`${input} ${suffix}`)
}
function runTimer() {
logger(list[0].item, 'timer')
for (let i = 0; i < list.length; i++) {
logger(list[i].item, 'timer');
for (t = list[i].time; t > 0; t--) {
logger(t, 'seconds');
}
for (let w = wait; w > 0; w--) {
logger(w, 'secs wait')
}
}
};
runTimer();
我可以得到正确的日志顺序,但我很难得到正确的时间,我在多个定时循环中调用 setTimeouts 时迷失了方向。我该怎么做?
【问题讨论】:
标签: javascript for-loop settimeout