settimeout 模拟实现 setinterval(带清除定时器的版本)
时间: 2024-04-16 11:24:43 浏览: 7
可以使用 `setTimeout` 来模拟实现带有清除定时器功能的 `setInterval`。下面是一个示例代码:
```javascript
function mySetInterval(callback, interval) {
let timerId = setTimeout(function tick() {
callback();
timerId = setTimeout(tick, interval);
}, interval);
return {
clear: function() {
clearTimeout(timerId);
}
};
}
// 使用示例
function sayHello() {
console.log('Hello!');
}
const interval = mySetInterval(sayHello, 1000);
// 5 秒后清除定时器
setTimeout(function() {
interval.clear();
}, 5000);
```
在上述代码中,`mySetInterval` 函数接受一个回调函数和时间间隔作为参数,并使用 `setTimeout` 来定时执行回调函数。在每次回调函数执行完后,重新设置一个新的 `setTimeout`,以实现循环调用的效果。
`mySetInterval` 函数返回一个对象,其中包含一个 `clear` 方法,用于清除定时器。在示例中,我们通过调用 `interval.clear()` 来清除定时器,这样在 5 秒后定时器将停止执行回调函数。