小霸王其乐无穷之函数回调

小霸王游戏机是中国上一代备受欢迎的家用游戏机,它在1990年代初期开始流行。当时,由于游戏软件受限,国内的游戏市场相对匮乏,这使得小霸王游戏机成为许多70、80后童年时光中难忘的一部分。

图片

小霸王游戏机分为两大主要部分:游戏机本身和卡带。游戏机是运行和操控平台,而卡带可以切换,让玩家尝试各种不同的游戏。如果把主机和游戏捆绑在一起,那对玩家来说将是非常糟糕的一件事。

编程是集众家之长,借鉴各种优秀思想的过程。当我们设计一个定时器函数,在到达指定时间后执行某些操作时,最佳实践是避免将具体操作写死在函数里。这就好比把游戏机和卡带结合在一起,导致函数只能做一件事,这显然是不理想的。优秀的设计应该是什么样的呢?定时器负责定时,而执行什么操作则由调用者决定。这样不就实现了游戏机和卡带的分离吗?定时器只负责定时,时间到了,你告诉我要执行什么操作,我就执行什么操作,简单高效。

幸好,在JavaScript中已经为我们内置了定时器函数,其中一个延时定时器setTimeout,它有两个参数,第一个参数是函数类型的参数,第二个参数是多少毫秒后执行第一个参数的函数。让我们小试一下,在1秒后,控制台输出"千锋数字智慧大前端",代码如下:

function printQfedu(){  console.log("千锋数字智慧大前端");}setTimeout(printQfedu, 1000);

这段代码会在执行后的1秒后,控制台输出"千锋数字智慧大前端"。需要注意的是,printQfedu可以当做变量使用,它表示整个函数。从这段代码我们可以看出,我们把一个任务传递给了定时器,定时器在1秒后会执行这个传入的任务,也就是说在我们看不到的代码的地方,执行了一次“printQfedu()”函数。

那说了这些跟回调有什么关系吗?有的,这个回调可以用两种非物质非标准说法,第一种是回头再执行传入的函数(像不像改天请你吃饭),另一种是调用回来,来个回马枪,那么

什么是回调函数

回调函数是一种在编程中常见的概念,指的是将一个函数作为参数传递给另一个函数,并在特定的事件或条件发生时由该函数执行。在异步编程中,回调函数通常用于处理异步操作的结果或事件的发生。回调函数的使用使得程序可以在合适的时机执行特定的逻辑,提高了代码的灵活性和可扩展性

回调函数的好处

简单来说,回调函数的主要好处是在异步编程中实现非阻塞操作,允许代码在某个事件完成后执行相应的逻辑,而不必等待事件完成。这样可以提高程序的响应性能和效率,使得代码更加灵活和可扩展

常见的回调函数使用

    1.  定时器:使用setTimeout或setInterval函数设置定时器,当指定的时间到达时,执行回调函数。(到达指定时间后,调用我们自己写的函数)
    2.  异步请求:在进行网络请求或服务器端操作时,通常使用回调函数处理异步操作的结果。当请求完成后,回调函数会被调用,以处理服务器返回的数据或错误。(设定一个如果有结果的时候,该如何处理)
    3.  Promise:在使用Promise进行异步编程时,会大量使用回调函数。(构造器是回调函数、当在不同通道中获取数据时,then的参数或者catch参数)
    4.  定义自定义函数:在自定义函数中,可以接收一个回调函数作为参数,使得函数的行为可以由调用者来定义。
    5.  数组的常用方法中,map、reduce、every等,参数都是回调函数。

总结

回调函数可以被视为传入的一项任务,在特定条件满足时触发执行(例如定时器),或者根据这项任务进行判断和处理(例如数组的方法)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/57623.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode】73.矩阵置零

一、题目 1、题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例1: 输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例2: 输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1…

Grafana 曲线图报错“parse_exception: Encountered...”

问题现象 配置的Grafana图报错如下: 原因分析 点开报错,可以看到报错详细信息,是查询语句的语法出现了异常。 变量pool的取值为None 解决方案 需要修改变量pool的查询SQL,修改效果如下: 修改后&#x…

24届近5年南京理工大学自动化考研院校分析

今天学长给大家带来的是南京理工大学控制考研分析 满满干货~还不快快点赞收藏 一、南京理工大学 ​ 学校简介 南京理工大学是隶属于工业和信息化部的全国重点大学,学校由创建于1953年的新中国军工科技最高学府——中国人民解放军军事工程学院&#xf…

爬虫011_元组高级操作_以及字符串的切片操作---python工作笔记030

获取元组的下标对应的值 注意元组是不可以修改值的,只能获取不能修改 但是列表是可以修改值的对吧

54款宝藏级AIGC工具分享(claude,Midjourney,Stable Diffusion等)

随着ChatGPT的一波又一波高潮,生成式AI逐渐进入人们视野,并开始大行其道,正如人们所说:AI用的好,天天下班早! 当然,有效的利用AI不但能下班早,还能在上班时间摸鱼,就如潘…

【办公自动化】使用Python一键提取PDF中的表格到Excel(文末送书5本)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

项目实战 — 消息队列(6){内存数据管理}

目录 一、设计数据结构 二 、实现管理方法 🍅 1、实现交换机管理 🍅 2、实现队列管理 🍅 3、实现绑定管理 🎈插入绑定操作 🎈删除绑定 🍅 4、进行消息管理 🍅 5、发送消息到指定队列 &a…

详解使用SSH远程连接Ubuntu服务器系统

演示环境: 1.Windows10系统 2.VMware Workstation Pro虚拟机 2.Ubuntu16.04.6(以上版本通用) 回归正题 一、在Ubuntu端: 1.首先需要安装SSH服务器,在ubuntu终端输入以下指令 sudo apt-get install ssh2.输入你的ubu…

布隆过滤器,Guava实现布隆过滤器(本地内存),Redis实现布隆过滤器(分布式)

一、前言 利用布隆过滤器可以快速地解决项目中一些比较棘手的问题。如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断和缓存穿透等问题。不知道从什么时候开始,本来默默无闻的布隆过滤器一下子名声大噪,在面试中面试官问到怎么避免缓存穿透&#…

露营,「迷失」在春风里

【潮汐商业评论/原创】 “周末一起去露营吧?”Susan向闺蜜发起邀请。 Susan闺蜜看到后连忙说“去多了感觉没意思,还不如去隔壁城市走走呢?”两人一拍即合,便研究起了攻略。 Susan疑惑,好像露营也没火多久&#xff0…

ROS获取IMU的数据

消息格式 上ROS官网查看👉ROS ROS官网给定的主题,一般我们使用第二个。   实现思路 (1)maweiUbuntu:~/catkin_ws/src$ catkin_create_pkg imu_pkg roscpp rospy sensor_msgs 实现代码👇   //imu_node.cpp #in…

Spring 事务失效的八种场景

1. 抛出检查异常导致事务不能正确回滚 Service public class Service1 {Autowiredprivate AccountMapper accountMapper;Transactionalpublic void transfer(int from, int to, int amount) throws FileNotFoundException {int fromBalance accountMapper.findBalanceBy(from…