一个函数作为另一个函数的参数,当这个函数在某些事情完后开始执行这个作为参数的函数。作为参数传给另一个函数,并在适当时机被“回过头”来调用的函数。
可以这样理解它:不是父函数执行完立刻调用它,而是父函数在某个时机(比如处理完数据、事件触发、网络请求成功等)才调用它。
- 同步调用
function greet(name, callback) {console.log("你好," + name);callback(); // 此处调用传入的函数
}function sayBye() {console.log("再见!");
}greet("张三", sayBye); // => 你好,张三// => 再见!
sayBye是回调函数;
它是被greet传进去,在适合时机调用的。
- 异步回调(比如网络请求)
axios.get('/api/books').then(function(response) {console.log('请求成功,返回数据:', response);});
.then(function)里的函数就是一个回调。
只有当axios请求成功后,这个函数才会被自动调用。
不是”主函数执行完就调用“,而是”请求成功后才调用“。