Node.js 为什么我们使用setTimeout()函数

Node.js 为什么我们使用setTimeout()函数

setTimeout()函数的目的是在一定的时间间隔之后执行一段代码。setTimeout()函数接受两个参数。第一个参数是一个函数,第二个参数是以毫秒为单位的时间。setTimeout()函数在第二个参数指定的时间之后执行传递给第一个参数的函数。setTimeout函数不会阻塞其他代码的执行,而是在指定的时间后执行setTimeout函数内部的代码。

语法:

setTimeout( function , time_in_milliseconds )

示例1: 在这个示例中,先定义了一个函数,然后将该函数作为setTimeout()函数的第一个参数传递。第二个参数指定了延迟时间,单位为毫秒,这里是3000。因此,函数内的代码将在3000毫秒后执行,程序中的其余代码将继续执行。

printStatement = () => { 
    console.log('Printed after 3 seconds'); 
} 
setTimeout(printStatement, 3000); 
console.log('Printed Immediately');

输出:

Printed Immediately
Printed after 3 seconds

解释: 在上面的代码中,setTimeout()函数内的代码将被存储,然后执行下一条语句。当调用栈为空且经过指定的时间后,setTimeout()函数内的代码将被执行。因此,上面的代码先显示“立即打印”,然后等待3秒,接着显示“3秒后打印”。

示例2: setTimeout()函数的另一个示例如下所示。下面给出的示例代码有点棘手。预期输出是“立即打印”,然后是从1到5的数字。但是代码并不按照这种方式工作。原因是因为setTimeout()函数将使用的数据的引用与代码一起存储,只有在调用栈为空时才会执行。所以,对于for循环的每次迭代,setTimeout()函数将存储代码。当变量i等于6时,for循环将终止。在此之后,将执行下一条语句,然后调用栈变为空。经过指定的延迟时间后,setTimeout()函数内的代码将执行。由于变量i的值现在等于6,每次都将显示6。

for (i = 1; i <= 5; i++){ 
    setTimeout(() => { 
        console.log(i); 
    },i*1000) 
} 
console.log('Printed Immediately');

输出:

Printed Immediately
6
6
6
6
6

解释: 在上述代码中,for循环从i=1到i=5执行,每次迭代中,setTimeout()函数内的代码将以所使用的变量的引用存储(此处为i)。当i的值变为6时,循环将终止。然后执行下一条语句。在调用堆栈变为空并且每个setTimeout()函数指定的时间过去后,将执行每个setTimeout函数中的代码。因此,代码显示“立即打印”,然后在每秒过去后显示已经变为6的i的值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程