位置: 编程技术 - 正文

jquery.Callbacks的实现详解

编辑:rootadmin

推荐整理分享jquery.Callbacks的实现详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

jQuery.Callbacks是jquery在1.7版本之后加入的,是从1.6版中的_Deferred对象中抽离的,主要用来进行函数队列的add、remove、fire、lock等操作,并提供once、memory、unique、stopOnFalse四个option进行一些特殊的控制。

功能介绍

jq的Callbacks模块主要是为其他模块提供服务的,他就像一个温柔的小女人,在背后默默地付出。Deferred就像一个巨人,在jq中那么的突出,但在内部,他受到Callbacks的服务。

Callbacks的几种状态:

once -- 回调函数只执行一次

unique -- 函数不能重复添加到回调列表中

memory -- 状态记忆,主要用于Deferred中

stopOnFalse -- 遇到return false 终止回调列表继续执行

我自己实现的Callbacks的几个简单的方法

add -- 向对应的回调函数列表添加一个函数

fire -- 触发回调,回调函数列表依次执行函数

has -- 回调函数列表是否存在传入函数

clear -- 清空回调函数列表

整体结构

jquery.Callbacks的实现详解

首先,我们要向得到一个想要的Callbacks模块,需要这样做:

由于我们需要基于一定状态来得到不同的实例,我们可以确定,我们需要一个存储状态的对象

我们给Callback函数传入了'memory once',我们怎么记录这两个状态呢,在这里,仿jq来写的一个函数来实现,如下:

以上代码,将 'memory once' 变成了 {memory: true, once: true} ,如果状态缓存对象里有这个对象,直接返回,没有的话先创建再返回。

接下来,就是Callback函数的全部代码了,先上代码

Callback函数执行后,返回一个对象,然后该对象包含了几个简单的功能。

下面我来介绍一下这部分的实现。

首先,如jq一样,我也定义了内部的add, fire, has方法,主要原因是逻辑需要,在返回对象的方法中实现once,memory状态控制,内部的add,fire方法是纯粹的添加和触发函数。

先来看cb.add方法,add方法可以接收多个函数,因此

使用内部的add做添加功能

再往下的一部分的功能是判断这个回调模块是否是memory状态,理解Deferred模块的同学应该知道,该模块是Promise模式,订阅成功或失败状态的回调函数,然后再某一时刻触发他,这个模式便引用了memory状态下的Callback,这个模式有一个奇怪的地方,如果你先发布成功,但是回调列表空空如也,那么程序并不会发布失败,而是等待成功回调函数的加入,一但回调函数加入,立刻执行他。

就是如下代码

提示 : ‘如果你先发布成功,但是回调列表空空如也,那么程序并不会发布失败,而是等待成功回调函数的加入,一但回调函数加入,立刻执行他' 的理解如下代码

如果在非memory状态,以上代码无效。需要再次fire才会执行。

经过上述,fire函数也好理解了,fire可接收两个参数,函数上下文,函数参数数组。

与add中memory状态的代码连串起来,以下代码就是fire时memory状态下的操作

如果是memory状态,回调列表为空,就保存函数执行上下文和参数数组,等add时立刻执行。

除了上述以外,代码就很简单易懂啦,Callback函数就到这里了,很简单的功能,唯一一点不好理解的就是memory状态。

总结

标签: jquery.Callbacks的实现详解

本文链接地址:https://www.jiuchutong.com/biancheng/376270.html 转载请保留说明!

上一篇:浅谈jquery的html方法里包含特殊字符的处理(jquery html函数)

下一篇:深入理解jQuery.data() 的实现方式(深入理解中国式现代化论文)

  • 房地产业预售房的预收款退回的涉税处理?
  • 个人所得税的会计科目
  • 一般增值税怎么开票的
  • 水泥建材公司
  • 允许抵扣的进项税额分为哪几种情况
  • 一般纳税人交的增值税能不能抵扣企业所得税
  • 以前年度调整后财务报表
  • 个体工商户定期定额核定
  • 冲减以前年度主营业务成本对今年有影响吗
  • 收到进项专用发票怎么做
  • 库存现金日记账和库存现金总账都应逐日逐笔
  • 资金周转率计算公式期初占用资金
  • 异地存款手续费2022最新规定
  • 固定资产预计净残值可以为0吗
  • 出口退税退的是进项税还是销项税
  • 劳务费发票是几个点的税率
  • 房地产教育培训
  • 上报汇总和抄报是一个意思吗
  • 长期投资项目包括哪些
  • 返回的工会经费如何做账最新
  • 一次发放数月的高温津贴如何计算个税?
  • 其他货币资金明细科目有哪些
  • 账户禁用无法登录怎么办
  • 如何正确使用好薪酬调查结果
  • 其他债权投资的交易费用计入什么科目
  • 企业开办费的会计分录
  • php的数组函数
  • 暂估成本能挂账多久
  • 锁定任务栏不管用
  • 若依框架是谁写的
  • 非盈利组织又称
  • 管理费用包括哪些明细科目
  • 事业单位结息会降薪吗
  • php get函数
  • 资产提前报废需要什么资料
  • 债务重组亏损计入
  • 职工伙食费会计科目
  • vue父子组件生命周期钩子执行顺序
  • js数组分组并排序
  • ChatGPT 中文调教指南。各种场景使用指南。学习怎么让它听你的话
  • 长期待摊费用为负数怎么调整
  • username命令
  • 财务管理中的折现率是指什么
  • sqlserver英文发音
  • 长期股权投资投资损益的确认
  • 公司支付宝账户怎么管理
  • mysql创建临时表并赋值
  • 补发以前年度工资怎么做账
  • 未入账分期金额要还吗
  • 所得税退税可以不退吗
  • 简易计税指的是增值税吗
  • 垃圾清运费属于什么服务
  • 暂估成本发票最晚什么时候补齐
  • 购买税控系统的增值税怎么处理
  • 付国外客户佣金怎么代扣代缴增值税
  • 生产经营所得如何申请退税
  • 固定资产抵扣进项税额最新规定
  • 待转销项税借方余额是什么意思
  • 信用减值损失6702
  • 公司五金是哪五金
  • 分公司第二季度总结报告
  • 投资性房地产公允价值变动借贷方向
  • 单位员工购买本地保险
  • 企业应按照有关规定结合本企业
  • 购车怎么做会计分录
  • 机械租赁怎么开9个点
  • mysql查询慢的优化方案
  • 电脑ahci模式什么意思
  • windows102021年更新
  • 怎么关闭win10升级
  • window7iis配置步骤
  • android怎么添加按钮
  • cocos2d开发app
  • unity拖进模型什么也看不到
  • perl use of uninitialized
  • css文本框怎么对齐
  • unauthorizedAccessException
  • javascript如何学
  • jquery上传文件到服务器
  • 广东省地方税务局班子成员
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设