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陷阱题
Feb 07 Javascript
获取非最后一列td值并将title设为该值的方法
Oct 30 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
页面图片浮动左右滑动效果的简单实现案例
Feb 10 Javascript
JavaScript中的单引号和双引号报错的解决方法
Sep 01 Javascript
JS版元素周期表实现方法
Aug 05 Javascript
Bootstrap的Refresh Icon也spin起来
Jul 13 Javascript
详谈jQuery.load()和Jsp的include的区别
Apr 12 jQuery
详解vue组件通信的三种方式
Jun 30 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 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使用者状态管理功能的应用
2006/10/09 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
PHP导入导出Excel代码
2015/07/07 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
python实现windows下文件备份脚本
2018/05/27 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
opencv+python实现均值滤波
2020/02/19 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
给酒店员工的表扬信
2014/01/11 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书