js中回调函数的理解 举例说明js回调函数
初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数。
我们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。
字面上的理解,回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。
其实也很好理解对吧,回调,回调,就是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数。但是以前看过很多博客,他们总是将回调函数解释的云里雾里,很高深的样子。
举一个别人举过的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。” 对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。其实这就是一个回调的过程。你留了个参数函数(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是主函数。她必须先回到家以后,主函数执行完了,再执行传进去的函数,然后你就收到一条信息了。
现在基本理解回调函数的意思了吧。不理解的话没关系,我们用代码说话。
//定义主函数,回调函数作为参数
function A(callback) {callback(); console.log('我是主函数');
}//定义回调函数
function B(){setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}//调用主函数,将函数B传进去
A(B);//输出结果
我是主函数
我是回调函数
上面的代码中,我们先定义了主函数和回调函数,然后再去调用主函数,将回调函数传进去。
定义主函数的时候,我们让代码先去执行callback()回调函数,但输出结果却是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,可以接着执行自己的代码。所以一般回调函数都用在耗时操作上面。比如ajax请求,比如处理文件等。
js中回调函数的理解 举例说明js回调函数相关推荐
- JS中同步与异步的理解
你应该知道,javascript语言是一门"单线程"的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条 ...
- Js中函数式编程的理解
函数式编程的理解 函数式编程是一种编程范式,可以理解为是利用函数把运算过程封装起来,通过组合各种函数来计算结果.函数式编程与命令式编程最大的不同其实在于,函数式编程关心数据的映射,命令式编程关心解决问 ...
- 在Node.js中使用事件,监听器,定时器和回调
Node.js通过其强大的事件驱动模型提供了可扩展性和性能,本篇文章的重点是理解该模型,以及它是如何不同于大部分Web服务器采用的传统线程模型的.了解事件模型至关重要,因为它可能迫使你改变设计应用程序 ...
- js中的prototype的理解
2019独角兽企业重金招聘Python工程师标准>>> JS中的prototype是JS中比较难理解的一个部分 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原 ...
- JS中对于prototype的理解
JS中的prototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...
- JS中[感叹号]function(){}()的理解
这种写法,是一种`立即执行函数`的写法,即IIFE等设计模式.这种函数在函数定义的地方就直接执行了. 理解IIFE设计模式的关键是要认识到,在ES6之前,JavaScript仅具有函数作用域(因此缺少 ...
- C语言中函数的定义举例说明,C语言函数的定义与使用
<C语言函数的定义与使用>由会员分享,可在线阅读,更多相关<C语言函数的定义与使用(5页珍藏版)>请在人人文库网上搜索. 1.讲义十三 C语言函数的定义与使用一.函数的定义:1 ...
- JS中setInterval、setTimeout不能传递带参数的函数的解决方法
setInterval 和 setTimeout 这两个函数比较好用,但会遇到比如说我隔个几秒后要执行的函数是带参数的,这种情况怎么办?可以用匿名函数包装处理 //不带参数的函数function te ...
- 为什么JS是单线程?JS中的Event Loop(事件循环)?JS如何实现异步?setimeout?
https://segmentfault.com/a/1190000012806637 https://www.jianshu.com/p/93d756db8c81 首先,请牢记2点: (1) JS是 ...
最新文章
- Kali Linux安装Google中文输入法(只需5步)
- Transformer入门篇-深度万字长文带你轻松入门深度学习框架
- RPOPLPUSH用法(转)
- C++/C中mutalbe与volatile的详解
- 学 Python 最大的 1 个误区,看看你中招了吗?
- 树莓派 pip安装mysql_树莓派 pip 手动安装
- Python中IOBase详解
- DNS(1) DNS基本概念和域名系统
- java(22) - 异常详解
- Linux 字符集问题
- 树莓派 ubuntu gpio_如何给树莓派安装操作系统
- Python语言实现用于动物分类的产生式系统
- [CISCN2019 总决赛 Day2 Web1]Easyweb
- 风雨萧关道【电视专题片解说词】
- 【zer0pts CTF 2022】 Anti-Fermat(p、q生成不当)
- 哲学生活中必背的哲学原理
- 2022 极术通讯-安谋科技参与起草的PSA相关物联网终端安全标准介绍(电信终端产业协会发布)
- 编程语言中一些令人抓狂的规则
- 数据分析师的就业前景如何?
- line-height1.5和line-height:150%的区别