settimeout 模拟实现 setinterval(带清除定时器的版本)
时间: 2024-04-16 11:24:37 浏览: 5
可以使用`setTimeout`来模拟实现带清除定时器的`setInterval`。下面是一个示例代码:
```javascript
function mySetInterval(callback, delay) {
let timerId = setTimeout(function tick() {
callback();
timerId = setTimeout(tick, delay);
}, delay);
return {
clear: function() {
clearTimeout(timerId);
}
};
}
// 使用示例
function sayHello() {
console.log('Hello!');
}
const interval = mySetInterval(sayHello, 1000);
// 5秒后清除定时器
setTimeout(function() {
interval.clear();
}, 5000);
```
在上面的代码中,`mySetInterval`函数接受一个回调函数和延迟时间作为参数,然后使用`setTimeout`来实现定时执行回调函数的功能。在每次回调函数执行完成后,会再次设置一个`setTimeout`来实现循环调用。返回的对象具有一个`clear`方法,调用该方法可以清除定时器。
在使用示例中,我们定义了一个`sayHello`函数用于输出"Hello!",然后使用`mySetInterval`来每隔1秒执行一次该函数。然后通过`setTimeout`在5秒后调用`interval.clear()`来清除定时器。