zoukankan      html  css  js  c++  java
  • jQuery->Callbacks

    Callbacks 是jQuery 1.7之后新加的一个工具,用于管理callback lists(函数数组)

    作为码农,经常被灌输这样的逻辑:

    真正厉害的不是写多么复杂的代码,而是写简单易懂的代码。

    不明就里的人则会把她作为衡量代码质量的准则,并抓住每一个抱怨的机会说道,“这代码真复杂,是给人看的吗!”。

    关于Callbacks基本使用,可以移步到Callbacks API 

    下面说一下创建Callbacks对象时使用的四个参数类型

    • once 确保只能fire一次,全局变量fired和stack保证不会再次执行fireWith(fired记录是否之前执行过,stack保存下一次执行的上下文和函数参数,once选项时,stack=false),当只有once选项时,fire结束前,self.disable()-> list = stack = memory = undefined;
    • memory 确保添加的函数可以立即fire一次,函数参数为前一次fire时使用的参数,由全局变量memory保存
    • unique 确保add操作不会加入相同的函数
    • stopOnFalse 确保在fire时,如果队列中有函数返回false,则fire在该函数处退出,之后的函数也不会被执行。

    理解了上面的内容还不足以看明白代码,因为上面的四个类型还可以进行组合使用。他们之间还存在相互关联

    • unique选项,在add操作时确保队列中无重复,和后续的执行无关联,因此和其它选项之间不存在交互
    • stopOnFalse和memory组合时的语义是: 当令fn()==false的函数出现前,执行memory选项的语义;当令fn()==false的函数出现后,终止memory选项的语义,此后fire执行stopOnFalse的语义。
    • once和memory组合时,此时的语义是:fire执行一次,之后add fn时fire当前添加的函数,参数使用第一次fire时的参数,与单独使用once选项不同,此时在fire结束前,执行的是list=[],而不是self.disable()
    • once memory和stopOnFalse的组合,当触发fn()==false的函数没有出现时,执行情况和once memory一致。当令fn()==false的函数出现后,执行disable()操作=>list = stack = memory = undefined;

    [1]源码1.10.1

  • 相关阅读:
    react-native 点击按钮进行交互
    常用类
    js里面 undefined 和 null
    ajax 提交数据
    通过Unicode判断一个字符是不是汉字
    git commit 后的对话框
    vue-cli 使用less的方法
    node创建服务器简单测试接口
    bootstrap3 模态框js的控制
    鱼眼镜头的坐标变换
  • 原文地址:https://www.cnblogs.com/sudo/p/3705336.html
Copyright © 2011-2022 走看看