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面向对象设计用{}好还是function(){}好(构造函数)
Oct 23 Javascript
javascript的内存管理详解
Aug 07 Javascript
javascript去掉前后空格的实例
Nov 07 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
浅谈js script标签中的预解析
Dec 30 Javascript
基于jQuery实现选项卡效果
Jan 04 Javascript
Three.js的使用及绘制基础3D图形详解
Apr 27 Javascript
vue mint-ui tabbar变组件使用
May 04 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
Aug 07 Javascript
vue实现点击隐藏与显示实例分享
Feb 13 Javascript
浅谈vue限制文本框输入数字的正确姿势
Sep 02 Javascript
javascript自定义右键菜单插件
Dec 16 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
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
分享最受欢迎的5款PHP框架
2014/11/27 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
go语言计算两个时间的时间差方法
2015/03/13 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python常用小技巧总结
2015/06/01 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
django的登录注册系统的示例代码
2018/05/14 Python
python numpy库np.percentile用法说明
2020/06/08 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
pip install命令安装扩展库整理
2021/03/02 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
促销活动总结怎么写
2014/06/25 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
千手观音观后感
2015/06/03 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript