JS回调函数 callback的理解与使用案例分析


Posted in Javascript onSeptember 09, 2019

本文实例讲述了JS回调函数 callback的理解与使用。分享给大家供大家参考,具体如下:

基本理解一个概念

回调函数回头再调用函数,等主干事情干完了,再回头干分支上的事情。

官方定义

A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

实例1

//定义主函数,回调函数作为参数
function A(callback) {
  callback();
  console.log('我是主函数');
}
//定义回调函数
function B(){
  setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}
//调用主函数,将函数B传进去
A(B);

输出结果:

我是主函数
我是回调函数

实例2

function a() {
  console.log("执行a函数");
  setTimeout(function(){
      console.log("执行a函数的延迟函数");
  },1000);
  function b() {
    console.log("执行函数b");
  );
  a();
  b();
};

输出结果

以上代码会先执行函数a,而且不会等到a中的延迟函数执行完才执行函数b, 在延迟函数被触发的过程中就执行了函数b,当js引擎的event 队列空闲时才会去执行队列里等待的setTimeout的回调函数,这就是一个异步的例子

调用 setTimeout 函数会在一个时间段过去后在队列中添加一个消息。这个时间段作为函数的第二个参数被传入。如果队列中没有其它消息,消息会被马上处理。但是,如果有其它消息,setTimeout 消息必须等待其它消息处理完。因此第二个参数仅仅表示最少的时间 而非确切的时间

所以即使,时间设置为0,也是会照样先执行函数b

结语

回调函数广泛运用在同步(sync)和异步(async)

常见的:

还需要深挖:js单线程和js异步

浏览器常驻三大线程: js引擎线程,GUI渲染线程,浏览器事件触发线程

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript sudoku 数独智力游戏生成代码
Mar 27 Javascript
jQuery对表单元素的取值和赋值操作代码
May 19 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
Aug 25 Javascript
用jQuery实现优酷首页轮播图
Jan 09 Javascript
angular实现IM聊天图片发送实例
May 08 Javascript
纯js实现动态时间显示
Sep 07 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
Aug 30 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
May 20 Javascript
JS实现简单移动端鼠标拖拽
Jul 23 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
Jul 28 Javascript
jQuery实现查看图片功能
Dec 01 jQuery
JavaScript实现表单验证功能
Dec 09 Javascript
世界上最短的数字判断js代码
Sep 09 #Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
Sep 09 #Javascript
javascript删除数组元素的七个方法示例
Sep 09 #Javascript
微信小程序 select 下拉框组件功能
Sep 09 #Javascript
移动端手指操控左右滑动的菜单
Sep 08 #Javascript
swiper Scrollbar滚动条组件详解
Sep 08 #Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 #Javascript
You might like
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
Node.js学习入门
2017/01/03 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
Python实现list反转实例汇总
2014/11/11 Python
Python字符串中查找子串小技巧
2015/04/10 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
python实现两个文件合并功能
2018/04/01 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
Python多进程fork()函数详解
2019/02/22 Python
对Django中内置的User模型实例详解
2019/08/16 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Python模块future用法原理详解
2020/01/20 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
求职简历中的自我评价分享
2013/12/08 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
中学生英语演讲稿
2014/04/26 职场文书
爱祖国演讲稿
2014/05/04 职场文书
计算机专业求职信
2014/06/02 职场文书
高二化学教学反思
2016/02/22 职场文书