setTimeout

简介: 【10月更文挑战第22天】

Node.js 的事件循环是其非阻塞 I/O 模型的核心,它允许 Node.js 在单线程上处理大量并发操作。事件循环不断地检查事件队列,处理事件,执行回调函数,并且是异步编程的基础。

Node.js 中的事件循环大致分为以下几个阶段:
image.png

  1. 定时器(Timers):检查并执行 setTimeout 和 setInterval 的回调。
  2. I/O 事件(I/O Events):包括网络请求、文件系统操作等,处理非阻塞的 I/O 事件。
  3. 立即执行回调(Immediate Callbacks):通过 process.nextTick() 和 setImmediate() 调度的回调函数。
  4. 关闭的回调函数(Close Callbacks):如 socket.on('close', ...) 等,处理一些资源的清理工作。

下面是一个简单的 Node.js 事件驱动程序的示例,它展示了如何使用 events 模块中的 EventEmitter 类来创建自定义事件和监听器:

// 引入 events 模块
var events = require('events');

// 创建一个 eventEmitter 对象
var eventEmitter = new events.EventEmitter();

// 定义一个事件处理程序
var connectHandler = function connected() {
   
  console.log('连接成功。');

  // 在连接成功后触发 'data_received' 事件
  eventEmitter.emit('data_received');
};

// 绑定 'connection' 事件到 connectHandler 处理程序
eventEmitter.on('connection', connectHandler);

// 定义另一个事件处理程序,用于处理 'data_received' 事件
eventEmitter.on('data_received', function() {
   
  console.log('数据接收成功。');
});

// 触发 'connection' 事件
eventEmitter.emit('connection');

console.log("程序执行完毕。");

在这个例子中,我们首先引入了 events 模块,并创建了一个 EventEmitter 对象。然后我们定义了一个名为 connectHandler 的函数,它会在触发 'connection' 事件时被调用,并打印 "连接成功。" 到控制台。在 connectHandler 函数内部,我们又触发了另一个名为 'data_received' 的事件。

目录
相关文章
|
3月前
使用requestAnimationFrame模拟实现setTimeout和setInterval
`rafTimeout` 函数采用 `requestAnimationFrame` 实现延时或周期性调用,提供与 `setTimeout` 和 `setInterval` 类似的功能。接受参数包括要执行的函数 `fn`、延迟时间 `delay`(默认 0ms)及是否周期执行 `interval`(默认为单次执行)。返回值为包含 `id` 的对象,可用于取消定时器。通过 `cancelRaf` 或 `cancelAnimationFrame` 方法可取消对应的 `rafTimeout` 定时器。
138 2
使用requestAnimationFrame模拟实现setTimeout和setInterval
|
6月前
|
JavaScript 前端开发
confirm()、setInterval()、setTimeout()
confirm()、setInterval()、setTimeout()
36 0
|
前端开发
setInterval
setInterval
42 0
|
消息中间件 JavaScript 前端开发
setTimeout和setInterval
setTimeout和setInterval
|
JavaScript 前端开发 Java
|
JavaScript 前端开发
|
JavaScript 前端开发
第46天:setInterval与setTimeout的区别
js的setTimeout方法用处比较多,通常用在页面刷新了、延迟执行了等等。今天对js的setTimeout方法做一个系统地总结。 setInterval与setTimeout的区别 说道setTimeout,很容易就会想到setInterval,因为这两个用法差不多,但是又有区别,今天一起总结了吧! 1、setTimeout 定义和用法: setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。
1496 0
|
JavaScript 前端开发 API
setTimeout,setInterval你不知道的…
  javascript线程解释(setTimeout,setInterval你不知道的事)  标签: javascript引擎任务浏览器functionxmlhttprequest 2011-11-21 14:22 5672人阅读  分类:...
1340 0