我想创建一个javascript'wait'函数。 我该怎么编辑?
function wait(waitsecs){
setTimeout(donothing(), 'waitsecs');
}
function donothing() {
}
答案 0 :(得分:47)
Javascript没有线程化,因此“等待”会冻结整个页面(并可能导致浏览器完全停止运行脚本)。
要专门解决您的问题,您应该在donothing
来电中setTimeout
后删除括号,并使waitsecs
不是字符串的数字:
console.log('before');
setTimeout(donothing,500); // run donothing after 0.5 seconds
console.log('after');
但这不会停止执行;在您的功能运行之前将记录“之后”。
要正确等待,您可以使用匿名函数:
console.log('before');
setTimeout(function(){
console.log('after');
},500);
所有变量仍然会出现在“之后”部分。你不应该链接这些 - 如果你发现自己需要,你需要看看你是如何构建程序的。如果需要循环,您可能还想使用setInterval
/ clearInterval
。
答案 1 :(得分:3)
你不应该编辑它,你应该完全废弃它。
任何使执行停止一段时间的尝试都会锁定浏览器并将其切换到Not Responding状态。您唯一能做的就是正确使用setTimeout
。