在特定延迟后使用JavaScript执行脚本
时间:2020-03-05 18:42:32 来源:igfitidea点击:
是否有任何类似于jQuerydelay()
或者wait()
的JavaScript方法(将脚本的执行延迟特定时间)?
解决方案
回答
我们需要使用setTimeout并将其传递给回调函数。我们无法在javascript中使用sleep的原因是因为我们同时会阻止整个页面执行任何操作。这不是一个好计划。使用Javascript的事件模型并保持快乐。不要打!
回答
有以下内容:
setTimeout(function, milliseconds);
该函数可以在执行该函数之前经过的时间被传递。
请参阅:WindowsetTimeout()
方法。
回答
我们还可以使用window.setInterval()定期运行一些代码。
回答
只是扩大一点...我们可以直接在setTimeout
调用中执行代码,但是正如@patrick所说,通常我们会分配一个回调函数,如下所示。时间以毫秒为单位
setTimeout(func, 4000); function func() { alert('Do stuff here'); }
回答
只是为了补充其他人对setTimeout
所说的话:
如果将来要使用参数调用函数,则需要设置一些匿名函数调用。
我们需要将函数作为参数传递,以便稍后调用。实际上,这意味着名称后没有方括号。以下将立即调用警报,并显示" Hello world":
var a = "world"; setTimeout(alert("Hello " + a), 2000);
要解决此问题,我们可以输入函数名称(如Flubba所做的那样),也可以使用匿名函数。如果需要传递参数,则必须使用匿名函数。
var a = "world"; setTimeout(function(){alert("Hello " + a)}, 2000); a = "Stack Overflow";
但是,如果运行该代码,我们会注意到2秒钟后,弹出窗口将显示" Hello Stack Overflow"。这是因为变量a的值在那两秒钟内发生了变化。要在两秒钟后说出" Hello world",我们需要使用以下代码片段:
function callback(a){ return function(){ alert("Hello " + a); } } var a = "world"; setTimeout(callback(a), 2000); a = "Stack Overflow";
它将等待2秒钟,然后弹出" Hello world"。