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 相关文章推荐
学习ExtJS(一) 之基础前提
Oct 07 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
Aug 23 Javascript
js setTimeout opener的用法示例详解
Oct 23 Javascript
jquery用offset()方法获得元素的xy坐标
Sep 06 Javascript
图解JavaScript中的this关键字
May 28 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 Javascript
jQuery拖拽通过八个点改变div大小
Nov 29 Javascript
layer实现关闭弹出层刷新父界面功能详解
Nov 15 Javascript
vue中的provide/inject的学习使用
May 09 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
vuejs实现下拉框菜单选择
Oct 23 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
世界上最短的数字判断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下连接mssql2005的代码
2011/01/17 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
Javascript 按位与运算符 (&)使用介绍
2014/02/04 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
简洁的十分钟Python入门教程
2015/04/03 Python
python的else子句使用指南
2016/02/27 Python
Django实现快速分页的方法实例
2017/10/22 Python
Python File readlines() 使用方法
2018/03/19 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
代码实例讲解python3的编码问题
2019/07/08 Python
python实现126邮箱发送邮件
2020/05/20 Python
Python代码注释规范代码实例解析
2020/08/14 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
幼师自荐信范文
2013/10/06 职场文书
学生宿舍管理制度
2014/01/30 职场文书
社区庆八一活动方案
2014/02/02 职场文书
运动会加油口号
2014/06/07 职场文书
助残日活动总结
2014/08/27 职场文书
党代会心得体会
2014/09/04 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
基于PyQt5制作一个群发邮件工具
2022/04/08 Python