javascript - 使用 JavaScript 在特定延迟后执行脚本

标签 javascript settimeout

有没有类似于 jQuery delay()wait() 的 JavaScript 方法(将脚本的执行延迟特定的时间)?

最佳答案

只是补充一下其他人对 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”。

关于javascript - 使用 JavaScript 在特定延迟后执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24849/

相关文章:

javascript - 在 HTML 输入框中输入完数字后,如何调用运行的 AJAX?

javascript - jquery 这不适用于 settimeout,bug?

javascript - 如果父元素被禁用,则阻止子元素上的单击事件

javascript - slice 在我的阵列上没有按预期工作

javascript - 我选择输入类型 ="file"后立即在文本框中获取文件名

reactjs - React 在异步回调中记住值

javascript - 如何调试使页面运行缓慢的脚本(根据 firefox)?

javascript - 为什么功能会按顺序运行,即使它们是在循环内异步调用的?

javascript - jQuery获取数组的特定属性

javascript - Webcomponents v1 - 非法构造函数