每隔一秒打印一个数
题目:实现 count(target),每隔 1 秒按顺序打印 1, 2, …, target。
方法一:闭包 + setTimeout
const count = function () {
let i = 0;
let timer;
return function change(target) {
i++;
console.log(i);
if (i === target) {
clearTimeout(timer);
return;
}
timer = setTimeout(() => {
change(target);
}, 1000);
};
}();
count(5);
方法二:async + await sleep
function sleep(interval) {
return new Promise((resolve) => setTimeout(resolve, interval));
}
async function stepPrint(n) {
for (let i = 1; i <= n; i++) {
console.log(i);
await sleep(1000);
}
}
stepPrint(5);
方法三:递归 setTimeout
const arr = [1, 2, 3, 4, 5];
function timeout(i = 0) {
if (i < arr.length) {
setTimeout(() => {
console.log(arr[i++]);
timeout(i);
}, 1000);
}
}
timeout();



