我试图知道在调用setTimeout
并将其分配给变量时该变量的值是什么。意外的值会被记录下来,所以请好奇这是怎么发生的。
我试图在堆栈上查找一些相关问题,并在网络上进行查找,但未获得确切答案。
更新-我正在寻求帮助,以了解如何计算分配给变量d的唯一ID?
let a = setTimeout( () => {
console.log('something will happen')
}, 2000)
let b = setTimeout( () => {
console.log('something will happen')
}, 3000)
let c = setTimeout( () => {
console.log('something will happen')
}, 4000)
console.log(a, b, c)
答案 0 :(得分:2)
期望使用哪种类型的值documentation。
报价:
返回的timeoutID是一个正整数,它标识通过调用setTimeout()创建的计时器。该值可以传递给clearTimeout()来取消超时。
了解setTimeout()和setInterval()共享相同的ID池,并且clearTimeout()和clearInterval()在技术上可以互换使用可能会有所帮助。但是,为清楚起见,您应尝试始终将它们匹配,以免在维护代码时造成混淆。
保证超时ID永远不会被后续调用同一对象(窗口或工作器)上的setTimeout()或setInterval()所重用。但是,不同的对象使用单独的ID池。
答案 1 :(得分:1)
当您调用setTimeout
或setInterval
时,将返回特定计时器的唯一ID。
通常,它只是一个数字,每个新计时器都会增加该数字,并且可以保证永远不会重复使用此数字。
您只能将其用于取消具有相应功能clearInterval
或clearTimeout
的超时或间隔。
有关返回值here的更多信息。
答案 2 :(得分:-3)
您可以这样声明超时
var timeoutControl = setTimeout( () => {alert()}, 1000);
然后,您可以取消超时,然后使用触发
clearTimeout(timeoutControl);
setInterval使用相同的机制,并带有clearInterval函数。