练习牛客网笔试题--前端js--29-计时器
// 题目描述
// 实现一个打点计时器,要求
// 1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
// 2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
// 3、第一个数需要立即输出
1.自己的练习
function count(start, end) {
console.log(start);
for (let i = start + 1, t = 0; i <= end; i++, t++) {
var timer = setTimeout(() => {
console.log(i);
}, t * 100);
}
return {
cancel: function() {
clearTimeout(timer)
}
}
}
2.题解
// 1. 方法1 setInterval
function count(start, end) {
console.log(start); //立即输出第一个数
var timer = setInterval(()=>{
if(start < end){ //从start到end
console.log(++start); //每次数字增幅为1
}else{
clearInterval(timer);
}
},100) // 100毫秒执行一次
return { //返回一个包含cancel的方法
cancel(){
clearInterval(timer);
}
}
}
// 2. 方法2 setTimeout
function count(start, end) {
if(start <= end){
console.log(start);
start++;
st = setTimeout(function(){count(start, end)}, 100);
}
return {
cancel: function(){clearTimeout(st);}
}
}