在特定延迟后使用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"。