29

我想创建一个 JavaScriptwait()函数。

我应该编辑什么?

function wait(waitsecs) {
    setTimeout(donothing(), 'waitsecs');
}

function donothing() {
    //
}

4

2 回答 2

62

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

于 2013-03-29T00:31:53.027 回答
5

你不应该编辑它,你应该完全废弃它。

任何使执行停止一段时间的尝试都会锁定浏览器并将其切换到无响应状态。你唯一能做的就是setTimeout正确使用。

于 2013-03-29T00:26:19.983 回答