Javascript 会立即执行此代码,但是,我需要它在执行之前等待 2 毫秒,如 setTimeout(doIt(i),2000);
中的脚本所示
为什么?
<script type="text/javascript">
var colors= ["red","pink","green"];
function doIt(i){
i++
console.log(i);
console.log("didIt");
$('body').append("<style>body{background:"+i+";}</style>");
if(i==2){
}
else{
test(i);
}
}
function test(i){
setTimeout(doIt(i),2000);
}
test(0);
</script>
最佳答案
这是最常见的错误。将您的代码更改为:
function test(i){
setTimeout(function() {
doIt(i);
}, 2000);
}
您直接调用了 doIt
方法,而不是通过在 之后编写
。(i)
来传递对 setTimeout
回调的引用这样做
另一种直接使用bind()
方法编写的方式:
function test(i) {
setTimeout(doIt.bind(null, i), 2000);
}
所有内容都在这里给出:
关于javascript - setTimeout立即执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38842276/