JavaScript 回调函数主要用于以下方面:
基础概念: 回调函数是在一个函数被调用时,作为参数传递给这个函数的另一个函数。当特定的条件或事件发生时,这个回调函数会被执行。
优势:
类型:
应用场景:
map
、filter
、reduce
等操作中的自定义处理逻辑。例如,在一个点击事件中使用回调函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="myButton">点击我</button>
<script>
document.getElementById('myButton').addEventListener('click', function () {
console.log('按钮被点击了!');
// 这里的匿名函数就是回调函数
});
</script>
</body>
</html>
当遇到回调地狱(多层嵌套的回调函数导致代码难以维护)的问题时,可以使用 Promise 或 async/await 来解决,以提高代码的可读性和可维护性。
例如,使用 Promise 改写多层嵌套的回调:
function asyncOperation1() {
return new Promise((resolve, reject) => {
// 模拟异步操作
setTimeout(() => {
resolve('操作 1 完成');
}, 1000);
});
}
function asyncOperation2() {
return new Promise((resolve, reject) => {
// 模拟异步操作
setTimeout(() => {
resolve('操作 2 完成');
}, 1000);
});
}
asyncOperation1()
.then(result1 => {
console.log(result1);
return asyncOperation2();
})
.then(result2 => {
console.log(result2);
})
.catch(error => {
console.error(error);
});
或者使用 async/await :
async function performOperations() {
try {
const result1 = await asyncOperation1();
console.log(result1);
const result2 = await asyncOperation2();
console.log(result2);
} catch (error) {
console.error(error);
}
}
performOperations();
领取专属 10元无门槛券
手把手带您无忧上云