简介:
回调函数实在另一个函数执行完毕后再执行的函数
在JavaScript中,函数是对象。因此,函数可以将函数作为参数,并且可以由其它函数返回。执行此操作的函数称为高阶函数。任何作为参数传递的函数都成为回调函数。
function funA() {
console.log("A");
}
function funB() {
console.log("B");
}
funA();
funB();
首先执行第一个函数,再执行第二个函数
结果
A
B
如果函数首先包含某种无法立即执行的代码呢?例如,我们必须发送请求然后等待响应的API请求或延迟数秒后再执行
// 将 funA() 延迟 1 秒
function funA() {
setTimeout(function() {
console.log("A");
},1000)}
function funB() {
console.log("B");
}
显然,funB()的结果比funA()早一步打印出,这并不是我们想要的
回调是一种确保某些代码在其他代码已经完成执行之前不会执行的方法
function hi(name, callback) {
console.log(`hi~ ${name} !!`);
callback();
}
hi('daming', function() {console.log("hello");})
> hi~ daming !!
> hello
function timeHi(name, callback) {
setTimeout(function() {
console.log(`hi~ ${name} !!`);
callback();},1000)
}
timeHi('zhangsan', function() {console.log("hello");})
> hi~ zhangsan !!
> hello
也可以这样,将函数定义作为参数传递,callback()
可以顺带参数的:
function timeHi(name, callback) {
setTimeout(function() {
console.log(`hi~ ${name} !!`);
callback(name);},1000)
}
function hello(name) {
console.log(`${name} 嘤嘤嘤~~`);
}
timeHi('zhangsan', hello);
> hi~ zhangsan !!
> zhangsan 嘤嘤嘤