码迷,mamicode.com
首页 > 其他好文 > 详细

关于jQery中$.Callbacks()的理解

时间:2019-10-15 14:54:09      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:false   添加   rip   重复   ons   java   turn   log   运行机制   

$.Callbacks()主要使用了回调,而说到回调又不得不说javascript的事件循环机制了。

所以想了解回调最好先看看js运行机制。

$.Callbacks()可以理解为创建一个回调队列

var cd = $.Callbacks()

function a (){
   console.log(‘a‘);  
}

function b (){
   console.log(‘b‘);  
}
cd.add(a,b); cd.fire();

//a
//b

上面的代码中我们创建了一个队列,然后用add的方式往里面添加两个回调函数,最后fire让这个回调队列执行。

 

而在fire()中是可以添加参数的

var cd = $.Callbacks()

function a (x,y){
   console.log(‘a‘,x,y);  
}

function b (x,y){
   console.log(‘b‘,x,y);  
}

cd.add(a,b);
cd.fire(10,20);

//a,10,20
//b,10,20

 

callbacks()中可以有三个参数,once、memory、unique、stopOnFalse,让我们分别来看看作用

var cd = $.Callbacks("once")

function a (x,y){
   console.log(‘a‘,x,y);  
}

function b (x,y){
   console.log(‘b‘,x,y);  
}

cd.add(a);

cd.fire(10,20);

cd.add(b);
cd.fire(10,20)

//a,10,20

once:确保这个回调只执行一次(只能够被fire一次)

var cd = $.Callbacks("memory")

function a (x,y){
   console.log(‘a‘,x,y);  
}

function b (x,y){
   console.log(‘b‘,x,y);  
}

cd.add(a);
cd.fire(
10,20);
cd.add(b);
//a,10,20 //b,10,20

memory:缓存上一次fire时的参数值,当add()添加回调函数时,直接用上一次的参数值立刻调用新加入的回调函数(拥有记忆功能)

 

var cd = $.Callbacks("unique")

function a (x,y){
   console.log(‘a‘,x,y);  
}

function b (x,y){
   console.log(‘b‘,x,y);  
}

cd.add(a,b);
cd.add(a,b);

cd.fire(10,20);

//a,10,20
//b,10,20

unique:一个回调只会被添加一次,不会重复添加

 

 

var cd = $.Callbacks("stopOnFalse")

function a (x,y){
   console.log(‘a‘,x,y);  
return false;
}

function b (x,y){
   console.log(‘b‘,x,y);  
}

cd.add(a,b);

cd.fire(10,20);

//a,10,20

stopOnFalse:某个回调函数返回false之后中断后面的回调函数

 

关于jQery中$.Callbacks()的理解

标签:false   添加   rip   重复   ons   java   turn   log   运行机制   

原文地址:https://www.cnblogs.com/xiaowin/p/11677576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!