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 innerHTML 的一些问题的解决方法
Jun 22 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
网页前端优化之滚动延时加载图片示例
Jul 13 Javascript
javascript类型转换使用方法
Feb 08 Javascript
js如何调用qq互联api实现第三方登录
Mar 28 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
May 23 Javascript
JavaScript模拟实现键盘打字效果
Jun 29 Javascript
jQuery中ajax获取数据赋值给页面的实例
Dec 31 jQuery
vue中使用input[type="file"]实现文件上传功能
Sep 10 Javascript
angular4应用中输入的最小值和最大值的方法
May 17 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
Oct 26 Javascript
React组件设计模式之组合组件应用实例分析
Apr 29 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
我的论坛源代码(六)
2006/10/09 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
php中大括号作用介绍
2012/03/22 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
JavaScript自执行闭包的小例子
2013/06/29 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
基于jQuery实现瀑布流页面
2017/04/11 jQuery
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python读写ini文件的方法
2015/05/28 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
社区创先争优承诺书
2014/08/30 职场文书
庆元旦演讲稿
2014/09/15 职场文书
办理信用卡工作证明
2014/09/30 职场文书
关于工作经历的证明书
2014/10/11 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
MySQL系列之十一 日志记录
2021/07/02 MySQL
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android