2017-05-06 37 views
2

请看下面的代码JS的setTimeout不会等待使用便签

function func() 
 
{ 
 
    alert('b'); 
 
    if (document.readyState != 'complete') 
 
    setTimeout(func(),1000); 
 
    else 
 
    alert('a'); 
 
}; 
 

 
window.location.replace('https://www.google.com/'); 
 
setTimeout(func(),5000);

当我运行该脚本,我立即得到一个警告,而无需等待5秒。

+0

通过去掉括号,我不明白含“B”的警报,这意味着函数func在 –

回答

0

您需要从FUNC删除括号:

setTimeout(func,5000); 

否则函数被调用立即而不是传递的功能,稍后调用。

function func() 
 
{ 
 
    alert('b'); 
 
    if (document.readyState != 'complete') 
 
    setTimeout(func,1000); 
 
    else 
 
    alert('a'); 
 
}; 
 

 
setTimeout(func,5000);

+0

现在的功能不会立即调用,但从来不走。 我没有得到警报('b') –

+0

'window.location.replace'这行代码在这里打破了代码,请参阅我的编辑。 – DavidG

+0

这类问题的解决方案是什么? –