Node.js

Node.js 知识量:9 - 37 - 115

3.4 非I/O的异步API><

定时器- 3.4.1 -

在Node.js中,除了异步I/O,还有一些与I/O无关的异步API,其中之一就是定时器。

定时器是用于在指定的时间间隔后执行某个操作或函数的工具。在Node.js中,有几种类型的定时器:

1. setTimeout(): 这个函数用于在指定的毫秒数后执行一个函数。它返回一个代表定时器的句柄,可以用于clearTimeout()函数来取消定时器。

const intervalId = setInterval(() => {  
  console.log('这个消息将每隔1秒打印一次');  
}, 1000);

2. setInterval(): 这个函数用于每隔指定的毫秒数执行一个函数。它也返回一个代表定时器的句柄,可以用于clearInterval()函数来取消定时器。

const intervalId = setInterval(() => {  
  console.log('这个消息将每隔1秒打印一次');  
}, 1000);

3. clearTimeout(): 这个函数用于取消由setTimeout()设置的定时器。

clearTimeout(timerId);

4. clearInterval(): 这个函数用于取消由setInterval()设置的定时器。

clearInterval(intervalId);

这些定时器API允许在特定的时间间隔后执行代码,或者定期执行代码。它们在处理需要定时执行的任务、延迟操作或周期性检查等场景中非常有用。

process.nextTick()- 3.4.2 -

process.nextTick() 是 Node.js 中的一个方法,用于将一个回调函数推迟到当前事件循环的末尾执行。这意味着该回调函数不会立即执行,而是等待当前正在执行的回调函数完成后才执行。

process.nextTick() 的作用是在当前事件循环的末尾添加一个回调函数,确保该回调函数在所有同步代码和当前事件循环中的回调函数之后执行。

这个方法常常用于优化性能,确保某个操作在当前的同步代码和事件循环中的所有回调函数执行完毕后再执行。

使用示例:

console.log('Start');  
  
process.nextTick(() => {  
  console.log('Next tick callback');  
});  
  
console.log('End');

输出:

Start      
End      
Next tick callback

可以看到,Next tick callback 是在 Start 和 End 之后执行的,因为它被推迟到了当前事件循环的末尾。

setImmediate()- 3.4.3 -

setImmediate() 是 Node.js 中的一个方法,用于将回调函数推迟到当前事件循环的末尾执行。这意味着该回调函数不会立即执行,而是等待当前正在执行的回调函数完成后才执行。

setImmediate() 的作用与 process.nextTick() 类似,但是它是在事件循环的下一个迭代中执行回调函数,而不是在当前事件循环的末尾。这意味着 setImmediate() 会在当前同步代码和事件循环中的所有回调函数之后,在下一个事件循环迭代中执行回调函数。

使用示例:

console.log('Start');  
  
setImmediate(() => {  
  console.log('setImmediate callback');  
});  
  
console.log('End');

输出:

Start      
End      
setImmediate callback

可以看到,setImmediate callback 是在 Start 和 End 之后执行的,因为它被推迟到了下一个事件循环迭代中。