[Medium] 手写 Repeat
2024年3月7日
💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
题目描述
手写一个 repeat
函式,会接受三个参数,包含
func
:要重复执行的函式times
:重复执行的次数wait
:每次重复之间的间隔时间
最后 repeat 会返回一个可执行函式,该函式执行时会重复执行 func
函式 times
次,每次间隔 wait
毫秒。
const repeatFunc = repeat(console.log, 3, 5000);
repeatFunc("ExplainThis"); // 每 5 秒输出一次 ExplainThis,共输出 3 次
本题解答
以下是本题的解答,详细解题思路可以在 E+ 成长计划看到。如果想练习更多题目,推荐可以到 GreatFrontEnd 上练习
解法
function repeat(func, times, wait) {
return wrapper function(...args) {
if (times > 0) {
func(...args);
setTimeout(wrapper, wait, ...args);
times--;
}
}
}