$.Callbacks的基本使用

jquery提供了一个$.callback的工具方法,可以用来管理函数,应用场景多用于用来管理回调函数。

基本使用

$.Callbacks对象
var callback = $.Callbacks()

在控制台打印callback可以看到对象内部的方法:
在这里插入图片描述

$.callback对象常用的方法

使用下列方法前,记得先引入jquery库!

add(fn[必填])

添加函数到调用列表

<script>
   var callback = $.Callbacks() 
   var one = function(){
       console.log('one')
   } 
   callback.add(one) 
   //把one函数添加到callback的调用列表中,等待被调用
</script>
fire(参数[非必填])

调用添加在列表中的函数

<script>
   var callback = $.Callbacks() 
   var one = function(){
       console.log(arguments[0]) //打印第一个实参
   } 
   callback.add(one) 
   callback.fire() //打印结果:undefined
   callback.fire('a')  //打印结果:a
  
   //callback调用列表中只添加了one函数
   //因此只会调用one函数  
   //第一个fire()没有传参数 所以打印一个实参为undefined
   //第二个fire()传了'a' 所以打印结果为a   
</script>
remove(fn[必填])

移除已添加在调用列表的函数

<script src="./jquery-3.4.1.min.js"></script>
<script>
    var callback = $.Callbacks() 
    var one = function(){
        console.log('one') 
    } 
    var two = function(){
        console.log('two')
    }
    var three = function(){
        console.log('three')
    }
    callback.add(one,two,three) 
    callback.remove(one) //从调用列表里面移除one函数
    callback.fire() //打印结果:two three   
</script>
disable()
<script>
    var callback = $.Callbacks() 
    var one = function(){
        console.log('one') 
    } 
    callback.add(one) 
    callback.disable() //禁止调用callback对象调用列表中的函数
    callback.fire() //打印结果:什么都没有输出
    // 禁用后相当于禁用了后续fire的使用  
</script>
$.callback对象的五种模式

$.callback方法中可以填入特定四种参数来决定操作的模式。

正常模式
var callback = $.Callbacks() 
//不传任何参数
//以上的演例均是正常模式
once模式

只允许调用一次fire

<script>
    var callback = $.Callbacks('once') 
    var one = function(){
        console.log('one')
    } 
    callback.add(one) 
    callback.fire() //打印结果:one
    callback.fire() //无效
</script>
memory模式

fire之后,添加的函数都会自动调用。

<script>
    var callback = $.Callbacks('memory') 
    var one = function(){
        console.log('one') 
    } 
    var two = function(){
        console.log('two') 
    }
    callback.add(one) 
    callback.fire() //打印结果:one
    callback.add(two)  //打印结果:two
</script>
unique模式

重复添加的函数,只会调用一次。

<script>
    var callback = $.Callbacks('unique') 
    var one = function(){
        console.log('one') 
    } 
    callback.add(one) 
    callback.add(one) 
    callback.fire() //打印结果:one
    //添加了两次one函数,但只会调用一次
</script>
stopOnFalse模式

函数的调用顺序,是根据添加执行的,但是遇到返回值为false的函数,就不会再往下调用。

<script>
    var callback = $.Callbacks('stopOnFalse') 
    var one = function(){
        console.log('one') 
    } 
    var two = function(){
        console.log('two') 
    } 
    var three = function(){
        console.log('three') 
        return false
    }
    var four = function(){
        console.log('four') 
    }
    callback.add(one,two,three,four) 
    callback.fire() //打印结果:one two three
    // 函数three返回值为false 
    // 因此不会再调用列表中的函数,因而four没有被调用
</script>

以上就是$.callback基本使用,下面通过案例介绍一下用法。
案例:

var master = function(timer){
        console.log('你是最棒的')
        clearInterval(timer)
    }

    var good = function(timer){
        console.log('还不错')
        clearInterval(timer)
    }

    var loser = function(){
        console.log('太差劲了')
    }

    //定义回调函数对象
    var success = $.Callbacks() 
    var progress = $.Callbacks() 
    var error = $.Callbacks()

    // 注册不同状态调用的对象
    success.add(master)
    progress.add(good)
    error.add(loser)

    // 通过定时器异步任务,调用不同的回调函数
    var timer = setInterval(function(){
        var num = Math.random()*100
        if(num > 85){
            success.fire(timer)
        }else if(num < 60){
            error.fire()
        }else{
            progress.fire(timer)
        }
    },1500)

以上案例是为了简单示例$.Callbacks应用,在实际setInterval中,可直接触发函数,不必通过fire的方式触发回调函数。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值