理解回调函数

Posted 做枚温婉的妹纸吧哈哈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解回调函数相关的知识,希望对你有一定的参考价值。

1.回调函数的作用域
回调函数作为参数传递给某个函数,因此回调函数和某个函数应该是处于平级的执行环境中的,它们的外层作用域链是相同的。

回调函数可以用于同步和异步。
javascript始终是单线程的,处理这个就不能处理别的。ajax是异步的,那是因为浏览器又开了一个线程去请求,JavaScript主线程仍然是单线程的。

JavaScript引擎是单线程运行的,浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序.

浏览器内核实现允许多个线程异步执行,这些线程在内核制控下相互配合以保持同步.假如某一浏览器内核的实现至少有三个常驻线 程:javascript引擎线程,界面渲染线程,浏览器事件触发线程,除些以外,也有一些执行完就终止的线程,如Http请求线程


浏览器对同步回调的实现方式是单线程的,拿到参数函数以及它的词法环境,直接调用即可。
而对于异步回调,需要另起一个线程,让函数先返回。当异步任务执行完后,再把事件放到任务队列中,依赖事件循环机制来触发。

这几篇文章解释得很清楚:
JavaScript可否多线程? 深入理解JavaScript定时机制
JavaScript回调函数
[JavaScript] 同步回调与异步回调

以上是关于理解回调函数的主要内容,如果未能解决你的问题,请参考以下文章

箭头函数中的 WebSocket 回调未按词法设置“this”

java 闭包与回调

作用域 var 词法分析 arguments

python函数基础3--闭包 + 递归 + 函数回调

JavaScript 闭包浅析

node14---分层结构数据库操作