面试题答案
一键面试- 错误处理阐述:
- 在Node.js中,
EventEmitter
是一个核心模块,它允许对象发射自定义事件。当使用EventEmitter
处理异步任务时,如果某个任务可能出错,可以通过为EventEmitter
实例添加'error'
事件监听器来捕获错误。一旦异步任务触发'error'
事件,注册的监听器函数就会被调用,从而可以在该函数中处理错误,避免程序崩溃。例如,当一个异步读取文件操作失败时,可以通过EventEmitter
的'error'
事件来捕获文件读取失败的错误,而不是让程序因为未处理的错误而崩溃。
- 在Node.js中,
- 示例代码:
const { EventEmitter } = require('events');
// 创建一个EventEmitter实例
const emitter = new EventEmitter();
// 模拟一个异步任务,该任务可能出错
function asyncTask() {
const shouldError = Math.random() > 0.5; // 随机决定是否出错
setTimeout(() => {
if (shouldError) {
emitter.emit('error', new Error('模拟异步任务出错'));
} else {
emitter.emit('success', '异步任务成功完成');
}
}, 1000);
}
// 为'error'事件添加监听器
emitter.on('error', (err) => {
console.error('捕获到错误:', err.message);
});
// 为'success'事件添加监听器
emitter.on('success', (message) => {
console.log('成功:', message);
});
// 执行异步任务
asyncTask();
上述代码中,asyncTask
函数模拟了一个可能出错的异步任务,通过setTimeout
模拟异步操作。根据随机数shouldError
决定是否触发'error'
事件。emitter.on('error')
监听器捕获并处理错误,避免程序崩溃。同时也添加了'success'
事件监听器用于处理任务成功的情况。