javascript callback函数的理解与使用
来源:互联网 发布:淘宝给客服发不了信息 编辑:程序博客网 时间:2024/06/05 18:13
最近做的一个项目中用到了callback函数,于是就研究了下总结下我对javascript callback的理解 首先从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);
我们平常会经常用到callback
比如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插入到页面显示*/getSinersData(iso_return){ .........}//当页面加载的时候调用window.onload=function(){ getSinersReuest();}
- javascript callback函数的理解与使用
- javascript callback函数的理解与使用
- javascript callback函数的理解与使用
- javascript的callback函数
- JavaScript callback function 理解
- callback的理解与Java实例
- callback的理解与Java实例
- Android 接口函数回调(callback)的基础使用方法与理解【回调】的具体实现
- Javascript的callback机制使用总结
- javascript回调函数(Callback)的理解
- javascript函数apply的使用和理解
- callback的理解
- python-callback的理解
- callback函数使用
- JavaScript的callback
- JavaScript 回调(callback)函数
- JavaScript 回调(callback)函数
- javascript 自动绑定JS callback 的方法函数
- 页面类-第一个自己设计的类
- 第八章:拦截器——深入浅出学Spring Web MVC
- java格林时间和标准时间之间相互转换
- 解决编译apache出现的问题:configure: error: APR not found . Please read the documentation
- 第九周上机项目四乘法口诀表
- javascript callback函数的理解与使用
- C#的Web开发程序监控及调试
- 新浪微博技术架构分析-转载
- 在Android中使App快速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能
- js刷新框架子页面的七种方法代码
- UVA624(01背包 + 路径打印)
- 第九章:对Ajax的支持——深入浅出学Spring Web MVC
- Android Material Design-Creating Apps with Material Design(用 Material Design设计App)-(零)
- 第九周项目三 *图