JS回调函数(callback)
2016-06-14 10:28
501 查看
在使用Jquery的时候,用到Callback(),回调函数的概念。而且很多。
比如:
回调函数大家都会用,只是Jquery封装了之后,不能让大家明白回调函数的真正使用。
JS Api 里这样解释:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.
当然我们可以在JS当中来真正尝试一下回调函数的神奇。
如果你直接在函数a里调用的话,那么这个回调函数就被限制死了。但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以 a(c)这个时候,函数c就成了回调函数。如果你写成了function a(){...;b();}就失去了变量的灵活性。下面是代码:
估计大家也看到了,我在a(callback),b(),c()方法里都写了Jquery的ajax函数,注意,这里是ajax的函数。是有区别的,我分别调用了内置函数,和自己定义的函数。区别就在这里,因为Jquery和JS用的callback是一样的,互通的,所以在这里,Jquery的内置函数会被调用了。
但是自己定义的函数是不会被识别的,甚至会报没有这个function.
(后面这段看得不是很理解,希望看到的高手请分析下)
所以在回调的时候注意这点。
比如:
$.ajax({ url:"test.json", type: "GET", data: {username:$("#username").val()}, dataType: "json", beforSend:function(){ // 禁用按钮防止重复提交 $("#submit").attr({ disabled: "disabled" }); }, complete:function(msg){ //请求完成后调用的回调函数(请求成功或失败时均调用) } , error:function(msg){ //请求失败时被调用的函数 } , Sucess:function(msg){ //请求成功后调用的回调函数 } });
回调函数大家都会用,只是Jquery封装了之后,不能让大家明白回调函数的真正使用。
JS Api 里这样解释:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.
当然我们可以在JS当中来真正尝试一下回调函数的神奇。
如果你直接在函数a里调用的话,那么这个回调函数就被限制死了。但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以 a(c)这个时候,函数c就成了回调函数。如果你写成了function a(){...;b();}就失去了变量的灵活性。下面是代码:
<!DOCTYPE HTML> <html> <head> <meta charset="GBK" /> <title>回调函数(callback)</title> <script type="text/javascript" src="jquery-1.4.4.min.js"></script> <script language="javascript" type="text/javascript"> var f; function d(){ alert("我是Jquery定义的函数"); } var e = function(){ alert("我也是Jquery定义的函数"); } function a(callback) { alert("我是parent函数a!"); alert("调用回调函数"); //callback(); $("#id").load("page参数"); d();//起作用 if (typeof callback === "function"){ alert(callback); } } function b(){ alert("我是回调函数b"); $("#id").load("page参数"); e();//不起作用 } function c(){ alert("我是回调函数c"); d();//不起作用 f();//不起作用 } function test() { a(b); a(c); } $(function(){ f = function(){ alert("我是回调函数f"); } }); </script> </head> <body> <h1>学习js回调函数</h1> <button onClick=test()>click me</button> <p>应该能看到调用了两个回调函数</p> </body> </html>
估计大家也看到了,我在a(callback),b(),c()方法里都写了Jquery的ajax函数,注意,这里是ajax的函数。是有区别的,我分别调用了内置函数,和自己定义的函数。区别就在这里,因为Jquery和JS用的callback是一样的,互通的,所以在这里,Jquery的内置函数会被调用了。
但是自己定义的函数是不会被识别的,甚至会报没有这个function.
(后面这段看得不是很理解,希望看到的高手请分析下)
所以在回调的时候注意这点。
相关文章推荐
- JS获取当前时间戳的方法
- JavaScript跨域总结与解决办法
- [Effective JavaScript 笔记]第32条:始终不要修改__proto__属性
- [Effective JavaScript 笔记]第33条:使构造函数与new操作符无关
- js
- JS设计模式之命令模式
- mvc json post执行顺序
- 基于gulp合并压缩Seajs模块的方式说明
- js算法: inserting sort 插入排序
- json-lib 的maven dependency
- JsonConverte扩展
- JS去除空格和换行的正则表达式(推荐)
- D3.js学习00_资源收集
- javascript用正则表达式过滤空格的实现代码
- 前台通过javascript模拟点击ASP按钮控件的方法
- 2016.06.14廖雪峰JS__学习笔记(高阶函数)__P3
- 使用Gson解析复杂、变态的Json数据(包含中文key)
- JS 打印对象的方法
- js判断输入字符串是否为空、空格、null的方法总结
- Js函数声明与函数表达式的区别