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 vvorld 在线加密破解方法
Nov 13 Javascript
prototype 学习笔记整理
Jul 17 Javascript
jquery键盘事件使用介绍
Nov 01 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
Mar 10 Javascript
React服务端渲染(总结)
Jul 01 Javascript
什么是Vue.js框架 为什么选择它?
Oct 17 Javascript
vue2.0父子组件间传递数据的方法
Aug 16 Javascript
JS利用prototype给类添加方法操作详解
Jun 21 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
Aug 08 Javascript
vue  elementUI 表单嵌套验证的实例代码
Nov 06 Javascript
详解如何在JS代码中消灭for循环
Dec 11 Javascript
redux处理异步action解决方案
Mar 22 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
15种PHP Encoder的比较
2007/03/06 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
python生成二维码的实例详解
2017/10/29 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
Django框架反向解析操作详解
2019/11/28 Python
浅谈Python __init__.py的作用
2020/10/28 Python
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
制定岗位职责的原则
2013/11/08 职场文书
高一生物教学反思
2014/01/17 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
单位在职证明书
2014/09/11 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang