我们都知道当一个函数完成时可以返回一个值。现在考虑以下代码行
var t = setInterval(function() {
console.log('hey hi hello now 2 seconds have passed down');
} ,2000);
clearInterval(t);
现在,clearInterval()
将setInterval()
函数返回的唯一 id作为参数,只有在函数完全运行后才会返回。我的代码中发生的事情是,在我的setInterval()
函数运行之前,它被清除了,这应该是不可能的,因为setinterval()
在调用其回调函数之前不会返回任何内容。
clearInterval()
函数如何能够在函数之前setinterval()
运行?
发生的情况是您setInterval
在代码的第一行第一次调用函数,它返回一个ID。
这个ID与函数的调用无关,之后你告诉JS删除这个间隔。所以不会发生任何事情。
这些是发生的步骤:
// Step #1
var t = setInterval(
// Step #3
function () {console.log('hey hi hello now 2 seconds have passed down');}
, 2000);
clearInterval(t);// Step #2
所以问题是你在调用函数之前清除了间隔。但在声明之后。
Wrong!
1-声明->清除->调用
Correct
1-声明->调用->清除
作为解决方案:
clearInterval
在里面打电话setInterval
。
像这样:
var t = setInterval(function () {
console.log('hey hi hello now 2 seconds have passed down');
clearInterval(t);
}, 2000);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句