0


JS-定时器的4种写法及介绍,前端组件开发

// 输出一次 timeout,每隔1S输出一次 interval

/--------------------------------/

// 通过setTimeout模拟setInterval 和 setInterval有啥区别么?
var callback = function () {

if (times++ > max) {

clearTimeout(timeoutId);
clearInterval(intervalId);
}

console.log(‘start’, Date.now() - start);
for (var i = 0; i < 990000000; i++) {}
console.log(‘end’, Date.now() - start);
},
delay = 100,
times = 0,
max = 5,
start = Date.now(),
intervalId, timeoutId;

function imitateInterval(fn, delay) {

timeoutId = setTimeout(function () {

fn();

if (times <= max) {

imitateInterval(fn ,delay);
}
}, delay);
}

imitateInterval(callback, delay);
intervalId = setInterval(callback, delay);

如果是setTimeout和setInterval的话,它俩仅仅在执行次数上有区别,setTimeout一次、setIntervaln次。 而通过setTimeout模拟的setInterval与setInterval的区别则在于:setTimeout只有在回调完成之后才会去调用下一次定时器,而setInterval则不管回调函数的执行情况,当到达规定时间就会在事件队列中插入一个执行回调的事件,所以在选择定时器的方式时需要考虑setInterval的这种特性是否会对你的业务代码有什么影响?

  • setTimeout(func, 0) 和 setImmediate(func)谁更快?(仅仅是好奇,才写的这段测试)

console.


本文转载自: https://blog.csdn.net/2401_84091468/article/details/137361801
版权归原作者 2401_84091468 所有, 如有侵权,请联系我们删除。

“JS-定时器的4种写法及介绍,前端组件开发”的评论:

还没有评论