全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 20 道配套习题

NodeJS事件驱动基础专题

专题说明

本专题面向Node.js初学者,系统讲解事件驱动编程基础知识,从事件循环机制、EventEmitter核心API到异步回调处理和错误处理,帮助开发者理解Node.js"单线程、非阻塞、事件驱动"架构的核心原理。

学习目标

  1. 理解Node.js事件循环的基本原理和核心特点
  2. 掌握setTimeout、setImmediate、process.nextTick的执行顺序
  3. 学会使用EventEmitter创建和触发自定义事件
  4. 理解on与once的区别及监听器管理方法
  5. 认识回调地狱问题及其解决方案

学习内容

本专题涵盖以下知识点:

  • 事件循环机制:单线程异步模型、事件循环阶段、setTimeout与setImmediate执行顺序、process.nextTick优先级、异步操作执行顺序分析
  • 事件发射器:EventEmitter基本使用、监听器数量限制、监听器执行顺序
  • 监听与触发事件:on与once区别、监听器移除方法、prependListener用法
  • 异步回调:回调地狱问题、回调最佳实践、错误处理规范

学习建议

  1. 这是Node.js入门的核心专题,务必扎实掌握
  2. 重点理解事件循环执行顺序,多写测试代码验证
  3. EventEmitter是Node.js很多模块的基础,理解其API用法
  4. 回调地狱问题在实际开发中常见,学会使用Promise解决
  5. 错误处理是Node.js编程的重要习惯,养成检查error参数的习惯

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
单选题

Node.js事件循环的核心特点是什么?

A

多线程并发执行

B

单线程异步非阻塞

C

同步阻塞执行

D

进程池模式

2
单选题

在IO回调中,setTimeout和setImmediate的执行顺序是什么?

A

setTimeout总是先执行

B

setImmediate总是先执行

C

执行顺序不确定

D

按添加顺序执行

3
判断题

process.nextTick的回调会在当前事件循环阶段结束后立即执行,优先于setTimeout和setImmediate。

A

B

4
多选题

Node.js事件循环包含以下哪些主要阶段?

A

timers(定时器阶段)

B

poll(IO回调阶段)

C

check(setImmediate阶段)

D

close(关闭回调阶段)

5
单选题

Node.js中创建自定义事件发射器需要继承哪个类?

A

EventTarget

B

EventEmitter

C

Observable

D

Subject

6
判断题

EventEmitter默认单个事件最多注册10个监听器,超过限制会发出警告。

A

B

7
单选题

EventEmitter的on方法和once方法的主要区别是什么?

A

on只能触发一次

B

once只能触发一次

C

on立即触发事件

D

once不触发事件

8
判断题

emitter.emit()方法返回true表示有监听器执行,返回false表示没有监听器。

A

B

9
单选题

Node.js异步回调函数的第一个参数通常是什么?

A

返回数据

B

错误对象(Error-first模式)

C

状态码

D

配置对象

10
单选题

多层异步回调嵌套导致的代码难以维护问题,通常称为?

A

异步循环

B

回调地狱(Callback Hell)

C

同步阻塞

D

内存泄漏

11
判断题

异步回调函数不会立即执行,而是在异步操作完成后,由事件循环调度执行。

A

B

12
单选题

Node.js中try-catch语句无法捕获哪种类型的错误?

A

同步代码错误

B

异步回调中的错误

C

JSON解析错误

D

类型错误

13
单选题

未捕获的异常会导致Node.js进程退出,可通过什么事件捕获全局错误?

A

process.on('error')

B

process.on('uncaughtException')

C

emitter.on('error')

D

global.onError

14
判断题

Promise中未处理的拒绝会触发unhandledRejection事件,如果不处理会导致Node.js进程退出(Node.js v15+)。

A

B

15
多选题

以下代码的输出顺序是什么?

JavaScript
console.log('1');
setTimeout(() => console.log('2'), 0);
process.nextTick(() => console.log('3'));
console.log('4');
setImmediate(() => console.log('5'));
A

1 → 4 → 3 → 2 → 5

B

1 → 2 → 3 → 4 → 5

C

1 → 4 → 2 → 3 → 5

D

1 → 4 → 3 → 5 → 2

16
单选题

EventEmitter如果没有监听器处理error事件,触发error事件会导致什么后果?

A

静默忽略错误

B

输出错误到console

C

Node.js进程崩溃退出

D

创建默认错误处理

17
填空题

Node.js事件循环六个阶段顺序: ______ 执行定时器回调; _______ 执行延迟IO回调; ______ / _______ libuv内部使用; ______ 执行IO回调; ______ 执行 ____________ 回调; ______ 执行关闭回调。

18
填空题

Node.js回调遵循 ___________ 模式,第一个参数是 ______ 对象,第二个参数是 ______ 。使用 _________ 无法捕获 ______ 回调中的错误。异步错误应在 ________ 内处理,或使用 _______ 结合 ___________ 捕获。

19
填空题

EventEmitter常用方法: ______ 注册持久监听器; ______ 注册 ______ 监听器; ______ ______ 事件; ______________ ______ 监听器; _______________ 设置最大监听器数量(默认 ______ 个)。

20
判断题

CPU密集型同步操作会阻塞Node.js事件循环,导致其他异步操作延迟执行。

A

B

← 上一个专题 NodeJS事件循环与异步模型
下一个专题 → NodeJS全局对象专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库