ts中时间函数的写法?
ts小白的提问,我想实现一个定时器,我写的代码如下:
var countDown: number = 3;const timer: number = setTimeout(() => {
if (countDown < 1) {
clearTimeout(timer);
} else {
countDown--;
}
}, 1000);
timer();
但此段代码在编辑器中会有报错提示
原因我猜是因为 setTimeout 并没有返回出一个具体的数值,而 timer 函数又被我定义的数字类型
我之所以这么写是因为度娘说 时间函数 类型是 数字类型
so,还望大家指点正确写法,万分感谢!
回答:
你看看你的timer
,它就是setTimeout
返回的结果,是一个数字,不是一个方法,你声明timer = setTimout()
的时候setTimeout
已经执行了,数字无法用timer()
这种方式去调用
再说setTimeout
的执行结果返回的就是一个数字,和你把timer
设置成number
没关系
回答:
这段代码有两个问题:
- timer() 这行代码是无法执行的,因为 timer 是一个定时器的句柄,它返回的是一个数字,而不是一个函数。
- setTimeout延时器只会执行一次,你应该用setInterval
修改后:
let countDown: number = 3;const timer = setInterval(() => {
if (countDown < 1) {
clearInterval(timer);
} else {
console.log(countDown);
countDown--;
}
}, 1000);
回答:
var countDown: number = 3;const timer: number = setTimeout(() => {
if (countDown < 1) {
clearTimeout(timer); //永远不会执行
} else {
countDown--;//只会执行一次
}
}, 1000);
timer();//time是个Number,不是函数,不能这样调用
如果改成:
var countDown: number = 3;const timer:number = setInterval(() => {
if (countDown < 1) {
clearTimeout(timer);
} else {
countDown--;
}
}, 1000);
这才是每隔一秒执行一次
以上是 ts中时间函数的写法? 的全部内容, 来源链接: utcz.com/p/933684.html