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>
答案 0 :(得分:4)
这是最常见的错误。将您的代码更改为:
function test(i){
setTimeout(function() {
doIt(i);
}, 2000);
}
您直接调用doIt
方法,而不是仅在setTimeout
之后写(i)
来将引用传递给doIt
回调。
使用bind()
方法直接书写的另一种方式:
function test(i) {
setTimeout(doIt.bind(null, i), 2000);
}
这一切都在这里给出: