ywe*_*nbo 0 javascript settimeout
我有一个函数睡在javascript如下:
var is_sleep = true;
function sleep(time){
if (is_sleep){
is_sleep = false;
setTimeout("sleep(time)", time);
}else{
is_sleep = true;
}
}
sleep(3000);
Run Code Online (Sandbox Code Playgroud)
但是它运行is_sleep = true的语句,不会运行is_sleep = false语句而不再睡眠.
有人能说出原因是什么吗?先感谢您.
它可能setTimeout正在被调用,但传递给它的字符串失败,因为范围将不再包含time,您正在引用它.尝试用这个替换该行:
setTimeout(function() { sleep(time); }, time);
Run Code Online (Sandbox Code Playgroud)
...定义了一个闭包,它使用了正确的范围.你也可以试试这个:
setTimeout(sleep, time, time);
Run Code Online (Sandbox Code Playgroud)
...将time作为参数通过sleep.