扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
你要知道加上“()”代表执行方法,而没有加上“()”的函数只是一个变量,不加上括号就是传递一个函数作为回调函数。
创新互联建站专注于企业网络营销推广、网站重做改版、齐齐哈尔网站定制设计、自适应品牌网站建设、H5场景定制、商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为齐齐哈尔等各大城市提供网站开发制作服务。
如果回调函数加上小括号,那顺序
执行回调函数
执行jQuery函数,而且“JQuery中回调函数”,这个“回调函数”就要变成
顺序一返回的值。
比如:
函数定义为:jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
其中success为回调函数,如果将data省略,第二个post参数即为回调函数。
假设要POST一些数据到w.php,成功的话弹出对话框,如下:
$.post("w.php", "data-here" , function(){alert('发送成功!')});
(如果第二个参数省略,第三个函数参数被提前到第二个的话,程序自动认为function()参数为回调函数),也就是说
$.post("w.php", function(){alert('发送成功')});
表示什么数据都不发送而只是发生post请求,成功就弹出对话框。
因为javascript的运行机制的原因,jquery作为成熟的工具,为javascript提供了大量的回调函数(callback)。
因为回调函数的工作原理以及工作时机,很多新手对回调函数不能熟练运用。回调函数的重要作用之一,就是在某项操作完成时,进行下一项操作。这两项操作功能上不一定耦合,但是逻辑上却必须耦合。意思是前一个操作实现的功能(效果)可以和回调函数实现的功能毫无联系,但是二者在代码逻辑上却是耦合的。耦合的意思是说,当一操作进行后,二操作会紧跟进行,二者的运行关系密不可分。回调函数增加了程序的耦合性,使代码的逻辑更容易理解。
回调函数的用处在javascript中可谓处处体现,比如最为重要的就是AJAX回调。
Jquery中提供了大量大回调函数,比如complete,success,fail等操作。这些操作的调用时机就如同他们的名字一样。success以为着成功的时候调用,等。
举个简单的例子,以jquery中的动画为例,现在我想实现一个让id为animate的dom对象宽度边长的动画,在这个对象变长之后,我想要提示用户,这个对象已经变长了。因此,我得使用以下的代码:
$("#animate").animate({
width: 200
}, {
duration: 500,
success: function() {
alert("width 已经变长了");
},
error: function() {
alert("出现了错误");
}
});
以上的代码定义了两个回调函数success和error,顾名思义,success是在成功的时候就会调用,error是在出错误之后调用。
这就是回调函数的基本运用。
看到这儿,或许你会问,为什么我不直接用这样的代码呢?
try {
$("#animate").animate({
width: 2000
}, 500, "linear");
alert(""width已经变长了);
} catch(error) {
alert("出错了");
}
如果你测试你会发现,动画并未完成,就出现了alert弹窗。
这就是javascript的运行机制所造成的,javascript的运行机制分为同步和异步,异步操作会破坏脚本的执行流,使得程序跳过异步(异步仍然在进行)而进入接下来的程序,异步操作即使在进行,也不会影响javascript的继续执行,也就是不会产生阻塞。同步操作中的定时操作有着与异步很相似的运行机制,但是依然是同步操作。以上的错误正是由于定时操作引起的。
回调函数的作用,最为重要的运用,就是运用在异步操作和定时操作。
jquery中运用回调函数最重要的地方有两个,一个是动画回调(就是在动画执行完成,或者执行错误,或者执行失败的时候调用),以及ajax(同动画)。ajax与回调是密不可分的。
jquery ajax 回调函数使用挺简单的,只要配置正确就可以使用。
$.ajax({ url: "test.html", context: document.body, success: function(){
alert("回调函数")
}});
使用代码如上,JQUERY通信组件这块封装的比较好,使用很方便。还可以配置异步或同步。
再补充一点,一般在回调函数里给个操作的提示信息,然后再进行相关的更新操作
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流