Javascript setTimeout立即执行
Javascript立即执行这段代码,但是,我需要它在执行之前等待2毫秒,如Javascript setTimeout立即执行,javascript,Javascript,Javascript立即执行这段代码,但是,我需要它在执行之前等待2毫秒,如setTimeout(doIt(I),2000)中所述 为什么? 变量颜色=[“红色”、“粉色”、“绿色”]; 函数doIt(i){ 我++ 控制台日志(i); console.log(“didIt”); $('body').append(“body{background:+i+”;}”); 如果(i==2){ } 否则{ 试验(i); } } 功能测试(一){ setTimeout(doIt(i),2000); }
setTimeout(doIt(I),2000)中所述代码>
为什么?
变量颜色=[“红色”、“粉色”、“绿色”];
函数doIt(i){
我++
控制台日志(i);
console.log(“didIt”);
$('body').append(“body{background:+i+”;}”);
如果(i==2){
}
否则{
试验(i);
}
}
功能测试(一){
setTimeout(doIt(i),2000);
}
试验(0);
这是最常见的错误。将代码更改为:
function test(i){
setTimeout(function() {
doIt(i);
}, 2000);
}
您直接调用了doIt
方法,而不是通过在doIt
之后写入(i)
将引用传递给setTimeout
回调
使用bind()
方法直接编写的另一种方法:
function test(i) {
setTimeout(doIt.bind(null, i), 2000);
}
这里都给出了:
setTimeout
第一个参数是对函数表达式和函数调用之间函数差异的引用:括号。一个是函数,另一个是函数返回的值。教程如下:
function test(i) {
setTimeout(doIt.bind(null, i), 2000);
}