setTimeout 用于在指定的时间后执行一次回调函数。
setInterval 则是按照指定的时间间隔循环执行回调函数。
setTimeout模拟setInterval
执行后继续递归
function simulatedSetInterval(callback, timeout) {
let timer = null;
function interval() {
timer = setTimeout(() => {
callback();
interval()
}, timeout);
}
interval();
return () => clearTimout(timer);
}
使用
const cancel = simulateSetInterval(() => {
console.log(1)
}, 300)
setTimeout(() => {
cancel()
}, 1000)
setInterval模拟setTimeout
计数,一次就清除。
function simulatedSetTimeout(callback, delay) {
let timer = 0;
timer = setInterval(function() {
clearInterval(timer);
callback();
}, delay);
return () => clearInterval(timer);
}
使用
const cancel = simulateSetTimeout(() => {
console.log(1)
}, 1000)
setTimeout(() => {
cancel()
}, 1100)