The*_*rch 1 javascript callback settimeout
我在下面有以下代码(注意,我稍后会在循环中添加更多代码,但我需要首先使用它):
var calls_on = true;
function hunt(max, ext, duration){
if(duration != '0' || duration != false || duration != 0){
duration = duration * 1000; // milliseconds to delay before stopping calls
var t=setTimeout(function(){calls_on=false;}, duration);
}
while(calls_on){
alert('reached');
}
alert('test');
}
Run Code Online (Sandbox Code Playgroud)
我已经确认'duration'条件正在执行,并且正在设置超时句柄.但是,这个循环永远不会结束,我从来没有看到setTimeout回调被执行.当我完全删除循环时,它工作正常(因为这使它成为函数中唯一的代码).
任何帮助,将不胜感激.setTimeout不知何故超出范围?循环如何使超时脱轨?
有趣的是,在块中的所有剩余代码执行之前,超时不会执行.因此,如果设置了超时,然后执行了一些长时间运行的函数,则在该长时间运行的函数完成之前,甚至不会启动超时.实际上,setTimeout和setInterval等异步函数被推送到称为事件循环的队列中
所以,由于你之后有一个无限循环,你setTimeout永远不会被执行.
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |