把一个函数作为参数传入到函数中

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
function f1(func){       //func函数作为参数传入f1函数
    console.log('1');        //首先进入f1函数
    setTimeout(function(){
        console.log('2');    //继续进入setTimeout方法,继续往下走,看到了调用func函数,然后去找func函数定义的地方,跳到f2函数内
        func();
        console.log('4');     //走完f2函数,又跳回func函数,继续走f1函数;
    },1000);
}
function f2(){
    console.log('3');       //跳进f2函数,继续走。走完f2函数,跳回去func函数那地方,继续走完f1函数;
}
f1(f2)
</script>

</body>
</html>

打印出来的顺序是:1234;

把f2函数作为参数传入到f1函数中,也就是异步调用f2函数。可以看到,f1函数没有执行完就碰到了f2函数,执行完f2函数,再接着回去继续执行f1函数。

JavaScript中的“回调”机制,类似于操作系统中的“中断和响应” —— 延时程序设置一个“中断”,然后执行func(),待1000毫秒时间到后,再回调执行f1(),再进入setTimeout函数

()执行。 

原文地址:https://www.cnblogs.com/Jerry-spo/p/6376105.html