js callback 实现
回调函数的概念
回调函数是JavaScript中一种常见的异步编程模式,本质是将一个函数作为参数传递给另一个函数,并在特定条件或事件触发时执行。回调函数允许代码在异步操作完成后继续执行,避免阻塞主线程。

基本实现方式
function fetchData(callback) {
setTimeout(() => {
const data = { id: 1, name: 'Example' };
callback(data);
}, 1000);
}
fetchData(function(result) {
console.log(result); // 输出: { id: 1, name: 'Example' }
});
错误优先回调模式
Node.js中常见的约定是错误优先回调(Error-first Callback),第一个参数保留给错误对象,成功时该参数为null:

function readFile(path, callback) {
fs.readFile(path, (err, data) => {
if (err) return callback(err);
callback(null, data);
});
}
readFile('/path/to/file', (err, content) => {
if (err) return console.error('Error:', err);
console.log('Content:', content);
});
回调地狱与解决方案
多层嵌套回调会形成"回调地狱",可通过以下方式改善:
- 命名函数替代匿名函数
- 使用Promise或async/await
- 模块化拆分代码
事件监听器中的回调
DOM事件处理是回调的典型应用场景:
document.getElementById('button').addEventListener('click', function() {
console.log('Button clicked');
});
注意事项
- 避免过度嵌套回调
- 正确处理错误情况
- 考虑使用现代异步方案(Promise/async)替代复杂回调结构
- 注意this绑定问题,必要时使用bind或箭头函数






