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

回到顶部