最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery如何自定义一个回调函数

来源:动视网 责编:小采 时间:2020-11-27 20:21:38
文档

jQuery如何自定义一个回调函数

jQuery如何自定义一个回调函数:首先从callback的字面翻译回调 可以理解这是一个函数被调用的机制当我们遇到一个名词首先可能是百度谷歌搜索看官方是怎么解释的下面是维基百科对回调的定义:a callback is a piece of executable code that is passed as an ar
推荐度:
导读jQuery如何自定义一个回调函数:首先从callback的字面翻译回调 可以理解这是一个函数被调用的机制当我们遇到一个名词首先可能是百度谷歌搜索看官方是怎么解释的下面是维基百科对回调的定义:a callback is a piece of executable code that is passed as an ar


首先从callback的字面翻译“回调” 可以理解这是一个函数被调用的机制

当我们遇到一个名词首先可能是百度谷歌搜索看官方是怎么解释的

下面是维基百科对回调的定义:

a callback is a piece of executable code that is passed as an argument to other code which is expected to call back (execute) the argument at some convenient time

硬翻译: 一个回调函数是作为另一个函数的参数的一个可执行的代码段 这个代码段在方便的时间来执行

通俗形象的解释: 把函数f2当做一个参数传给函数f1 并且在f1里适当的时间执行f2(下面的所有例子我都用f1,f2表示)

所以我们可以得到一个这样的回调函数模式

function f1(f2) { //f1要执行的一些代码
 if (f2 && typeof(f2) === "function") { //对f2做判断是否存在并且是一个函数 f2();
 }
}

这里要注意两点 参数里的f2是一个指向f2这个函数的指针所以f2后面不能加括号

而f1内部的f2后面要有括号 因为这时我们要调用执行f2 ,所以要写f2()

我们把这个模式实例化看下他的执行结果

声明函数function f1(f2) {
alert("我是f1");if (f2 && typeof(f2) === "function") { //写上判断是个好习惯f2()
}
}
执行
f1(function() {
alert("我是f2");
})
结果://"我是f1",“我是f2”

我们看下整个函数执行的过程 当调用 f1(function(){alert("我是f2");})的时候

首先把一个匿名函数传给了f1() 而这个匿名函数就是声明函数里的参数f2 javascript程序是从上到下执行 先执行了alert("我是f1"); 然后执行了f2();

那我们可不可以这样写呢

function f1(f2) { alert("我是f1"); if (f2 && typeof(f2) === "function") { 
 f2()
 } alert("我又是f1 哈哈");
}
执行
f1(function(){
 alert("我是f2");
})//结果:我是f1 ,我是f2,我又是1 哈哈

再看对callback的定义 ,我们可以让callback在我们想要执行的时候执行,不影响f1本身的执行流

但为了封装和美观大多数我们会这样写

function f1(f2){ 
if (f2 && typeof(f2) === "function") { 
settimeOut(function(){f2()},1000) ;//f1执行1s后f2执行}
}function f2(){/**/}
f1(f2);

其实回调函数没那么复杂的,在js里面,function你可以当成一个普通的参数。只要后面加上(),就表示调用这个函数了。

再看看下面这个例子

$(function(){
 function funcname(param){
 //do something
 
 //callback
 param.callback(); 
 }
 
 //调用
 funcname({
 callback:function(){
 alert('callback do'); 
 } 
 }); 
});

从上面的例子也可以看出来,其实每定义一个函数,都将函数入容器的栈,index就是函数名。默认是在window下,因此可以把字符串丢过去,在window下也可以通过字符串调用到这个回调函数。

带参数的话,可以采用上面的方式。

比如jQuery里的一个例子

$("#div1").fadeOut("fast",functin(){
 $("#div2").fadeIn("slow");
})

让#div快速隐藏然后让#div2渐渐显示,在jQuery里有大量的callback函数

并且有一个专门的有一个方法callbacks来管理

jQuery.Callbacks = function( options ) {...}

最后我说下我最近在项目中用到的callback吧

hybrid app 功能大概就是 我向ios发送一个请求 ios返回给我的json数据 然后我将返回的数据解析插入到web页面上

//首先我写一个javascript和ios通信callback函数(简化)getData(callback){
settimeOut(function(){callback(iso_return)},100);
}//然后我向ios发送一个请求function getSinersReuest(){window.location.href="vvmusic://....callback=getSinersData"}/*然后ios截获url中的callback执行getData(getSinersData)返回给我数据;我的getSinersData是我想把ios返回的json插入到页面显示8*/getSinersData(iso_return){
.........
}//当页面加载的时候调用window.onload=function(){
getSinersReuest();
}

文档

jQuery如何自定义一个回调函数

jQuery如何自定义一个回调函数:首先从callback的字面翻译回调 可以理解这是一个函数被调用的机制当我们遇到一个名词首先可能是百度谷歌搜索看官方是怎么解释的下面是维基百科对回调的定义:a callback is a piece of executable code that is passed as an ar
推荐度:
标签: 自定义 定义 函数
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top