JavaScript setTimeout()

setTimeout() 方法在指定时间后执行一段代码。该方法仅执行一次代码。

JavaScript setTimeout 的常用语法是

setTimeout(function, milliseconds);

其参数为

  • function - 包含一段代码的 函数
  • milliseconds - 函数执行后的时间(毫秒)

setTimeout() 方法返回一个 intervalID,它是一个正整数。


示例 1:3 秒后显示一次文本

// program to display a text using setTimeout method
function greet() {
    console.log('Hello world');
}

setTimeout(greet, 3000);
console.log('This message is shown first');

输出

This message is shown first
Hello world

在上面的程序中,setTimeout() 方法在 3000 毫秒(3 秒)后调用 greet() 函数。

因此,程序在 3 秒后仅显示一次 “Hello world” 文本。

注意:如果您想在一段时间后执行一次代码块,setTimeout() 方法很有用。例如,在指定时间后向用户显示消息。


setTimeout() 方法返回 interval id。例如,

// program to display a text using setTimeout method
function greet() {
    console.log('Hello world');
}

let intervalId = setTimeout(greet, 3000);
console.log('Id: ' + intervalId);   

输出

Id: 3
Hello world

示例 2:每 3 秒显示一次时间

// program to display time every 3 seconds
function showTime() {

    // return new date and time
    let dateTime= new Date();

    // returns the current local time
    let time = dateTime.toLocaleTimeString();

    console.log(time)

    // display the time after 3 seconds
     setTimeout(showTime, 3000);
}

// calling the function
showTime();

输出

5:45:39 PM
5:45:43 PM
5:45:47 PM
5:45:50 PM
..................

上面的程序每 3 秒显示一次时间。

setTimeout() 方法在时间间隔(此处为 3 秒)后仅调用一次函数。

然而,在上面的程序中,由于函数调用了自身,程序每 3 秒显示一次时间。

此程序将无限运行(直到内存耗尽)。

注意:如果您需要多次执行函数,最好使用 setInterval() 方法。


JavaScript clearTimeout()

如您在上面的示例中看到的,程序在指定的时间间隔后执行一段代码。如果您想停止此函数调用,可以使用 clearTimeout() 方法。

clearTimeout() 方法的语法是

clearTimeout(intervalID);

这里,intervalIDsetTimeout() 方法的返回值。


示例 3:使用 clearTimeout() 方法

// program to stop the setTimeout() method

let count = 0;

// function creation
function increaseCount(){

    // increasing the count by 1
    count += 1;
    console.log(count)
}

let id = setTimeout(increaseCount, 3000);

// clearTimeout
clearTimeout(id); 
console.log('setTimeout is stopped.');

输出

setTimeout is stopped.

在上面的程序中,setTimeout() 方法用于在 3 秒后增加 count 的值。然而,clearTimeout() 方法停止了 setTimeout() 方法的函数调用。因此,count 的值没有增加。

注意:您通常在需要取消 setTimeout() 方法调用之前执行它时使用 clearTimeout() 方法。


您还可以向 setTimeout() 方法传递其他参数。语法是

setTimeout(function, milliseconds, parameter1, ....paramenterN);

当您向 setTimeout() 方法传递其他参数时,这些参数(parameter1, parameter2 等)将被传递给指定的 function

例如,

// program to display a name
function greet(name, lastName) {
    console.log('Hello' + ' ' + name + ' ' + lastName);
}

// passing argument to setTimeout
setTimeout(greet, 1000, 'John', 'Doe');

输出

Hello John Doe

在上面的程序中,将两个参数 JohnDoe 传递给了 setTimeout() 方法。这两个参数将传递给 setTimeout() 方法中定义的函数(此处为 greet() 函数)。


另请阅读

在结束之前,让我们来测试一下您对 Javascript setTimeout() 的知识!您能解决以下挑战吗?

挑战

编写一个函数来查找句子中最长的单词。

  • 返回给定字符串 sentence 中的第一个最长单词。
  • 例如,在字符串 “The quick brown fox jumps over the lazy dog” 中,第一个最长的单词是 “quick”,它有 5 个字母。
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战