首页 > 编程知识 正文

注册回调函数有什么用,回调函数必须是静态的吗

时间:2023-05-06 17:18:39 阅读:39557 作者:438

前言

其实,我一直对js里的卡拉巴克很困惑。 困惑的原因是学习中这份资料很少,但平时经常看到。 偶尔复制前人的代码,即使功能实现也不追究其原因。 那样的话,这个callback的概念就会越来越混乱。 因为你总是觉得那是在你的Ajax请求后调用的函数。 另外,因为我觉得那是你在某个函数中的形式。drdwt有一天看了一点关于Node.js的代码后,你会更加崩溃。 因为你会找到很多卡拉巴克。 但是,这样下去绝对不行。 因为很多东西只是知道概念和理论,而没有实践结果,没有思考,没有感觉。 这些东西永远不是你的,所以所有用于技术的东西都要花时间钻研。 花点时间实践也能明白,很多思想会沉淀,所以最近浏览了相关的文章和资料。 我也在项目中实践了一些事情。 这样绕了一圈,会很明亮

一 .搞清楚异步和同步(异步同步/同步同步) )。

举小栗:

1 .早上起床后,无论是刷牙还是洗脸,一件事做完后再进行下一步就是同期的例子

2而且刷牙的时候也可以烧水喝。 (你不用等着刷牙。 )这是异步示例,也是异步代码示例

上面的代码先执行函数a。 然后,在a中的延迟函数执行之前不执行函数b。 在触发延迟函数时执行函数b,并在js引擎事件队列空闲时执行队列中等待的setTimeout回调函数。 这就是异步的例子

闲话:

调用setTimeout

函数在一段时间后将消息添加到队列中。 此期间作为函数的第二个参数传递。 如果队列中没有其他消息,则会立即处理该消息。 但是,如果有其他信息的话,setTimeout

消息必须等待其他消息被处理。 因此,第二个参数表示最少的时间,而不是精确的时间

因此,即使将时间设定为0,函数b也同样先执行

段同步代码示例

因为print函数在change函数完成后执行,所以结构的输出为1。 change函数是在更改全局变量a的值并执行change函数之后执行的打印函数

二.回调函数到底是什么

acallbackisafunctionthatispassedasanargumenttoanother

功能性andisexecutedafteritsparentfunctionhascompleted。

以上说明是谷歌给出的说明,非常清晰简洁,有时我觉得英语理解比翻译成中文二次理解更清楚

看看一些经典的回调函数代码。 我保证你一定用过他们

因此,回调与同步、异步没有直接关联。 回调只是一种实现方法,既有同步回调,也有异步回调,还有事件处理回调和延迟函数回调。 这些在我们的工作中有很多使用场景

所以不是我们不知道回调函数,而是我们漂浮在这个“callback”字上面。 drdwt在函数中看到它会感到困惑,但其实只是形状参数的名称

三.为什么写回调函数

看了以上的简单介绍之后,是不是对callback不再了解,不再感到神秘了? 所以,尽情地使用吧。

对于回调函数以及js单线程和js异步机制,您知道js是单线程的。 这种设计模式给我们带来了很多便利。 我们不需要考虑各线程之间的通信,也不需要写很多烧脑的代码。 也就是说,js的引擎只能做一件一件的事情,所以所有要做的事情都像队列一样,等待被触发执行。 但是,这样一来,如果队列中的一件事需要很多时间,之后的任务就会处于等待状态,有时也会发生浏览器的假死现象。 例如,js在同步机制的缺陷下设计了异步模式,因为如果其中一个正在运行的任务是死循环,则后续的其他任务将无法正常执行

在异步执行模式下,每个异步任务都有自己的一个或多个回调函数。 因此,当前正在运行的异步任务执行后,将执行其回调函数,而不是立即执行事件队列中的下一个任务,下一个任务也不会等待当前回调函数执行。 为什么这么说,是因为不知道当前的回调是否顺利执行。 如果被触发,就会执行。 举个例子,

从上面的照片可以看出,我想买点什么。 单击项目详细信息页面后,尚未请求图像资源。 此时,我可以点击add to cart开始另一个请求。 执行js任务列表中的购物车添加事件,其执行不会干扰图像资源的请求任务,这也是异步执行机制的优点

关于js单线程浏览器内核的多线程说到js单线程,顺便也要知道浏览器内核的多线程。 关于浏览器的结构在这里不进行说明。 自己的研究还没有进展,等研究学习研究贯彻后再分享

浏览器驻留三大线程: js引擎线程、GUI呈现线程、浏览器事件触发线程

看这张图,会很明亮吗? 浏览器是多线程的运行环境,浏览器内核被指定了多个线程。 最重要的线程之一是js引擎的线程。 此外,js事件队列中的异步请求、交互式事件启动、计时器等事件由浏览器的事件触发线程接收,当浏览器的事件触发线程启动时,任务被添加到js引擎的任务队列中,并

原文13359 www.Jian Shu.com/p/6bc 353 e5f7a 3

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。