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代码
Mar 07 Javascript
Ajax 数据请求的简单分析
Apr 05 Javascript
jquery 利用show和hidden实现级联菜单示例代码
Aug 09 Javascript
兼容主流浏览器的iframe自适应高度js脚本
Jan 10 Javascript
table insertRow、deleteRow定义和用法总结
May 14 Javascript
jQuery实现精美的多级下拉菜单特效
Mar 14 Javascript
总结十个Angular.js由浅入深的面试问题
Aug 26 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
Nov 10 Javascript
详解Vue.js中.native修饰符
Apr 24 Javascript
JS实现可视化音频效果的实例代码
Jan 16 Javascript
JS实现盒子拖拽效果
Feb 06 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
Jul 23 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静态新闻列表自动生成代码
2007/06/14 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
2007/09/24 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
介绍Python中的文档测试模块
2015/04/28 Python
Python的Django框架安装全攻略
2015/07/15 Python
Python读取网页内容的方法
2015/07/30 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
python实现简单加密解密机制
2019/03/19 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
电信营业员自我评价分享
2014/01/17 职场文书
喝酒检查书范文
2014/02/23 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
授权委托书格式模板
2014/04/03 职场文书
2014年体育部工作总结
2014/11/13 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python
使用Ajax实现进度条的绘制
2022/04/07 Javascript