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

2023-11-19

小霸王游戏机是中国上一代备受欢迎的家用游戏机,它在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等,参数都是回调函数。

总结

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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小霸王其乐无穷之函数回调 的相关文章

随机推荐

  • 机器学习之线性回归——OLS,岭回归,Lasso回归

    机器学习之线性回归 线性回归 最小二乘法 OLS 岭回归 Ridge Regression Lasso回归 OLS 岭回归 Lasso回归之间对比 线性回归 什么是线性回归呢 其实线性回归是统计学中的 线性回归 Linear Regress
  • java 中的指针_Java中的指针

    java 中的指针 Java中有指针吗 简短的答案是 不 没有 这对于许多开发人员来说似乎是显而易见的 但是 为什么对其他人却不那么明显呢 http stackoverflow com questions 1750106 how can i
  • STM32实现HID键盘

    上面是我的微信和QQ群 欢迎新朋友的加入 这个帖子不是技术贴 是成品分享贴 电路设计 实物图 软件设计 功能说明 1 固件通过虚拟U盘升级 2 自定义按键功能 全键盘 3 七彩灯颜色设置 4 多媒体按键功能 5 支持按键双击和单击操作 6
  • c语言药房管理系统

    include
  • VisualStudio代码片段管理

    文章目录 前言 1 查看代码片段 2 插入代码片段方式 3 使用扩展创建代码片段 3 1 安装VS2019的扩展 3 2 使用扩展创建代码片段 4 不知为何 VS2022我安装一直有问题 扩展安装成功 但是新建文件没有 Snippet De
  • Unity 运行FixedUpdate()无响应

    问题 最近在学习unity时 根据 史上最全Unity3D教程 哔哩哔哩 bilibili 在Visual Studio中编写如下代码时 Unity的Console面板并没有输出预期的信息 即按每个固定帧速率的帧调用FixedUpdate
  • Matlab导出动态链接库dll

    1 新建 m文件 内容 function c Add a b c a b end 保存为 Add m 2 命令行输入 gt gt mex setup MEX configured to use Microsoft Visual C 2013
  • 各种注释总结

    jsp注释 html注释
  • C语言—指针

    文章目录 1 指针 1 1 指针的定义 1 2 和 1 3 指针与堆内存 1 4 指针运算 1 5 常量指针与指针常量 1 5 1 常量指针 1 5 2 指针常量 1 6 函数指针 2 指针与数组 3 指针与函数 4 指针与链表 4 1 链
  • cmake中的编译选项

    CMake是一个跨平台的构建系统 它可以根据简单的配置文件生成各种平台的构建工具 例如Makefile Visual Studio项目文件等 CMake使用CMakeLists txt文件来描述项目的构建规则和依赖关系 在这个文件中 可以设
  • 浅谈opencv3.2中各个模块的简介

    3 2版本的模块说明 Opencv3 2模块 首先打开opencv modules hpp文件 可以看到对于各个功能模块的定义如下 This file defines the list of modules available in cur
  • 分享几个项目中用到的设计模式

    前言 之前项目中出于扩展性和有雅性的考虑 使用了多种设计模式进行项目框架的设计 主要的一些设计模式是单例模式 工厂模式 策略模式 责任链模式 代理模式这几种 现在依次讲讲这几个的主要是实现方式和在我们项目中的应用场景 核心设计模式分享 单例
  • WPF TextBlock 实现点击事件

    TextBlock 标签里定义MouseLeftButtonDown 事件 xaml cs
  • ICCV 2023

    ICCV 2023 MPI Flow 从单视角构建的多平面图像中学习光流 引言 主要贡献 Motivation 算法细节 Optical Flow Data Generation Independent Object Motions Dep
  • Node之使用dns模块解析域名

    引 在网络编程中 开发者更倾向于使用域名 而不是IP地址来指定网络连接的目标地址 在Node js中 提供dns模块 以实现域名查找及域名解析的处理 在dns模块中 提供了三个主方法及一系列便捷方法 其中三个主方法分别为用于将一个域名解析为
  • MySQL使用查询结果生成临时表

    MySQL中不支持对同一个表使用其查询结果更新or删除本表内数据 也就是update或delete后的where条件为针对相同表的select 解决方案是创建临时表做过度保存中间数据 可以直接使用查询结果来形成临时表 CREATE TABL
  • verilog奇数分频器的问题讲解(7分频为例)

    先不多哔哔 直接上代码 verilogHDL 代码的后面讲原理 module fenpin3 clk clk7 rst input clk rst 设置rst的目的是当rst 1的时候给cnt0和cnt1赋初值 output clk7 re
  • python sslerror_如何解决“不良握手”问题利用python请求时的SSLErrors

    I m trying to get access to the BambooHR API documentation here but I receive the following error params user username p
  • GREASELM: GRAPH REASONING ENHANCED LANGUAGE MODELS FOR QUESTION ANSWERING

    本文是LLM系列文章 针对 GREASELM GRAPH REASONING ENHANCED LANGUAGE MODELS FOR QUESTION ANSWERING 的翻译 GREASELM 图推理增强的问答语言模型 摘要 1 引言
  • 小霸王其乐无穷之函数回调

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