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 相关文章推荐
Js的MessageBox
Dec 03 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
Aug 13 Javascript
jQuery实现可拖动的浮动层完整代码
May 27 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
Sep 26 Javascript
jQuery圆形统计图开发实例
Jan 04 Javascript
动态加载jQuery的两种方法实例分析
Jul 17 Javascript
JS实现跟随鼠标的链接文字提示框效果
Aug 06 Javascript
bootstrapValidator 重新启用提交按钮的方法
Feb 20 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
Mar 14 Javascript
Vue使用Proxy监听所有接口状态的方法实现
Jun 07 Javascript
Javascript地址引用代码实例解析
Feb 25 Javascript
webpack3.0升级4.0的方法步骤
Apr 02 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 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
python解析xml文件操作实例
2014/10/05 Python
python写入xml文件的方法
2015/05/08 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
django API 中接口的互相调用实例
2020/04/01 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
Python实现GIF图倒放
2020/07/16 Python
俄罗斯女装店:12storeez
2019/10/25 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
什么是类的返射机制
2016/02/06 面试题
医学生自荐信
2013/12/03 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
高一物理教学反思
2014/01/24 职场文书
自我鉴定书
2014/03/24 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
MySQL 四种连接和多表查询详解
2021/07/16 MySQL