什么是callback ?

简单的定义:回调就是一个在另外一个函数执行完后要执行的函数

复杂的定义:在JavaScript中,函数是对象。因此函数可以将函数作为参数,并且可以由其他函数进行返回。执行此操作的函数称为高阶函数。任何作为参数传递的函数都称为回调函数。

为什么要回调 ?

开篇已经介绍了JavaScript是单线程的,需要通回调函数处理异步相关的逻辑,理论还是过于生硬,我们还是来看段代码吧:

function frist(param) {
    console.log(param);
}
function second(param) {
    console.log(param);
}
frist(1);
second(2);

//先执行first函数,再执行second函数,控制台将输出以下内容:
1
2

在看下面这段案例:我们希望在一秒后输出2,可以看到在输出2之前输出了3。

function funA(param) {
    console.log(param);
}
function funB(param) {
   setTimeout(function () {
       console.log(param);
   }, 1000);
}
funA(1);
funB(2);
funA(3);
//输出
1
3
2

我们希望延时一秒输出2,按123顺序输出

function funA(param) {
    console.log(param);
}
function funB(param,collback) {
    setTimeout(function () {
        console.log(param);
        collback(3);
    }, 1000);
}
funA("1");
funB("2",funA);
//输出
1
2
3