回调函数

37 阅读2分钟

回调函数

会在外部函数执行完某些任务后被调用的函数

回调函数的结构

  • 外部函数会接收一个回调函数作为参数
  • 当某些操作完成时,外部函数就会“回调”并执行这个回调函数
// 外部函数
function greet(name, callback) {
  console.log("Hello, " + name);
  callback();  // 在适当时机调用回调函数
}

// 回调函数
function sayGoodbye() {
  console.log("Goodbye!");
}

// 调用外部函数,传递回调函数
greet("Alice", sayGoodbye);

输出:

Hello, Alice Goodbye!

回调函数的作用

回调函数通常用来:

  • 处理异步操作:例如,服务器请求完成后的回调、定时器结束后的回调等。
  • 数组操作:如 mapfilterreduce 等方法都使用回调函数来操作数组中的元素。
  • 事件监听:监听用户的点击、键盘输入等事件时,通常会传入回调函数处理这些事件。

回调函数在数组方法中的应用

回调函数在常用的数组方法中是非常常见的,它通常作为参数传递给这些方法,用于对数组元素进行处理。 例如:filter()方法中的回调

const numbers = [1, 2, 3, 4, 5];

// 使用回调函数过滤出大于 2 的数字
const filteredNumbers = numbers.filter((number) => number > 2);

console.log(filteredNumbers); // [3, 4, 5]

这里,filter 方法接收一个回调函数 (number) => number > 2,这个回调函数会在数组的每个元素上执行。对于每个元素,如果回调函数返回 true,该元素就会被保留在新的数组中;如果返回 false,该元素就会被移除。

回调函数的异步操作

回调函数经常用于处理异步操作,典型的例子是网络请求、定时器等。异步操作通常不会立即完成,而是稍后再回调处理结果。

例子:异步回调函数

function fetchData(callback) {
  setTimeout(() => {
    const data = "This is the data!";
    callback(data);  // 异步操作完成后回调
  }, 1000);
}

fetchData((data) => {
  console.log(data);  // 1秒后输出: This is the data!
});