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 相关文章推荐
javascript函数重载解决方案分享
Feb 19 Javascript
JavaScript通过select动态更换图片的方法
Mar 23 Javascript
Bootstrap如何创建表单
Oct 21 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
Dec 09 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
Dec 06 Javascript
总结js函数相关知识点
Feb 27 Javascript
vue实现文件上传功能
Aug 13 Javascript
微信小程序图片左右摆动效果详解
Jul 13 Javascript
vue 路由子组件created和mounted不起作用的解决方法
Nov 05 Javascript
微信小程序利用云函数获取手机号码
Dec 17 Javascript
jQuery实现飞机大战小游戏
Jul 05 jQuery
JS实现简单贪吃蛇小游戏
Oct 28 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
destoon二次开发入门示例
2014/06/20 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
php header函数的常用http头设置
2015/06/25 PHP
php自定义分页类完整实例
2015/12/25 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
纯JS实现轮播图
2017/02/22 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
php 修改密码实现代码
2017/05/24 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
利用python批量检查网站的可用性
2016/09/09 Python
pytorch打印网络结构的实例
2019/08/19 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
python中取绝对值简单方法总结
2020/07/24 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
信息技术专业个人自我评价
2013/12/11 职场文书
财务负责人任命书
2014/06/06 职场文书
学校国庆节活动总结
2015/03/23 职场文书
python基础之停用词过滤详解
2021/04/21 Python
python实现的人脸识别打卡系统
2021/05/08 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python