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 相关文章推荐
jquery ajax执行后台方法
Mar 18 Javascript
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
Mar 03 Javascript
JavaScript中的面向对象介绍
Jun 30 Javascript
js中哈希表的几种用法总结
Jan 28 Javascript
JavaScript生成的动态下雨背景效果实现方法
Feb 25 Javascript
jquery实现浮动的侧栏实例
Jun 25 Javascript
用js实现简单算法的实例代码
Sep 24 Javascript
微信小程序 实战实例开发流程详细介绍
Jan 05 Javascript
Node.js进阶之核心模块https入门
May 23 Javascript
微信小程序使用map组件实现路线规划功能示例
Jan 22 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
May 14 Javascript
详解vue中$nextTick和$forceUpdate的用法
Dec 11 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
thinkphp中memcache的用法实例
2014/11/29 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
JS分页效果示例
2013/10/11 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
简单解决Python文件中文编码问题
2015/11/22 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
python 实现生成均匀分布的点
2019/12/05 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
师范应届毕业生自荐信
2013/11/18 职场文书
法务专员岗位职责
2014/01/02 职场文书
《我的信念》教学反思
2014/02/15 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
宣传普通话标语
2014/06/27 职场文书
会计人员演讲稿
2014/09/11 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
考研经验交流会策划书
2015/11/02 职场文书