博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js回调函数(callback)理解
阅读量:5098 次
发布时间:2019-06-13

本文共 4209 字,大约阅读时间需要 14 分钟。

js学习

自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗。迅速google之,发现原来中文翻译成回调。也就是回调函数了。不懂啊,于是在google回调函数,发现网上的中文解释实在是太“深奥”了,我承认自己才疏学浅了。看了几个回调的例子后,貌似有点理解了。下面是我对回调函数的理解,要是理解错了,请指正,不甚感激。

        首先还是从jquery网站上的英文定义入手,身为国人,我真感到悲剧。一个回调的定义被国内的“高手”解释成什么样,就在那绕圈子,貌似只有把你绕进去了,他才算高手。浮云,一切都是浮云。

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有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。

其实中文也很好理解:回调,回调,就是回头调用的意思。函数a的事先干完,回头再调用函数b。

举个现实的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。”对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。

其实这就是一个回调的过程。你留了个函数b(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是函数a。她必须先回到家以后,函数a的内容执行完了,再执行函数b,然后你就收到一条信息了。

这里必须清楚一点:函数b是你以参数形式传给函数a的,那么函数b就叫回调函数。

 也许有人有疑问了:一定要以参数形式传过去吗,我不可以直接在函数a里面调用函数b吗?确实可以。求解中。

<解惑:如果你直接在函数a里调用的话,那么这个回调函数就被限制死了。但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以a(c)这个时候,函数c就成了回调函数。如果你写成了function a(){...;b();}就失去了变量的灵活性。>

下面用代码来证实我的理解。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<
html
>
  
<
head
>
  
<
title
>回调函数(callback)</
title
>
<
script 
language="javascript" type="text/javascript">
function a(callback)
{   
    
alert("我是parent函数a!");
    
alert("调用回调函数");
    
callback();
}
function b(){
alert("我是回调函数b");
  
}
function c(){
alert("我是回调函数c");
  
}
  
function test()
{
    
a(b);
   
a(c);
}
  
</
script
>
</
head
>
  
<
body
>
<
h1
>学习js回调函数</
h1
>
<
button 
onClick=test()>click me</
button
>
<
p
>应该能看到调用了两个回调函数</
p
>
</
body
>
  
</
html
>

 

转载:http://luxiao1223.blog.51cto.com/2369118/482885

 

针对javascript回调函数传参数的简单实例

 

问题:

现在有函数如下定义:

function A(a,callback){
....
}
function B(){
....
}
则可以有如下调用
A(a,B);来实现回调。

现在我希望传给B一个参数c,即实现类似于:
A(a,B(c));的效果,各位高手帮帮忙,应该如何实现?

 

解答:

  1. <html> 
  2. <head> 
  3. <title> 
  4. jsp3 
  5. </title> 
  6. </head> 
  7. <body bgcolor="#ffffff"> 
  8. <script language="javascript" type="text/javascript"> 
  9. function A(a,callback){ 
  10. var b=callback; 
  11. alert(a+b); 
  12. function B(c){ 
  13. return (-c); 
  14. </script> 
  15. <form method="post" action="jsp3.jsp"> 
  16. <br><br> 
  17. <input type="button" name="Submit" value="Submit" οnclick="A(4,B(3));"> 
  18. </form> 
  19. </body> 
  20. </html>

转载于:http://blog.sina.com.cn/s/blog_4bb52a160100da4w.html

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<
span 
style="font-size:14px;">我包装了jQuery的ajax方法
function doAjax(u,param,callback){
      
$.ajax({
            
type:'POST',
            
url:u,
            
data:param,
            
success:callback
      
});
}
 
function showAlert(data){
     
alert(data);
}
 
比如这样调用 doAjax("server.php","id=12&type=1",showAlert);
$.ajax 在success后,会返回一个data到showAlert中,显示出来 ,没有问题.
可是,当我想多传一个参数给showAlert时怎么写?
写成doAjax("server.php","id=12&type=1",showAlert("hi",data))、或者把上面的success:callback 写成success:callback(msg,data)显然都不行,如之奈何?求助~~~</
span
>

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<
span 
style="font-size:14px;color:#333333;">简单,很多方法都定义了回调函数,回调函数也是函数,就是说不管怎么传,只需要是个函数类型即可。写法如下。
方式1,
doAjax(参数1,参数2,function(request,opts){
         
callback(request,opts,agrs);
 
});
function callback(request,opts,args){
               
};
方式2,
var args=N;
doAjax(参数1,参数2,function(request,opts){
       
var X=N;
       
回调函数代码块..
       
和以上几乎一样,看个人编码方式选择。     
});</
span
>

  

越不想学什么,越就被什么所折磨。看看javascript回调吧。 直接上码吧。。

    1.  
    2. <</span>html>   
    3.       
    4.    <</span>head>   
    5.       
    6.    <</span>title>回调函数(callback)</</span>title>   
    7.    <</span>script language="javascript" type="text/javascript">   
    8.   
    9. function a(callback){  
    10.     alert("我来自父函数a");  
    11.       
    12.     callback();  
    13.   
    14. }  
    15. function b(){  
    16.     alert("我来自子(回调)函数 b");  
    17.   
    18. }  
    19.   
    20. function c(){  
    21.     alert("我来自子(回调)函数 c");  
    22.     }  
    23.       
    24.       
    25.     function test(){  
    26.       
    27.         a(b);  
    28.           
    29.         a(c);  
    30.     }  
    31.       
    32. //--------------------下面2个函数简单演示了从父函数传递给回调函数----------    
    33.       
    34. //Callback 就是一个参数名 这个参数代表的是一个函数 暂且不要管这个函数有没有参数   
    35. //  。。。 应该还有其他写法吧?   
    36. function e(m,n,Callback){  
    37.     var d = m+n;  
    38.     alert("一个从父函数e 产生的参数将要被传递给回调函数 ,这个参数是:"+d);  
    39.       
    40.     //这里才写你想调用的函数---参数要正确  
    41.     Callback(d);  
    42. //-----------  
    43. }//     |  
    44. //      |   
    45. function callback(data){  
    46.   
    47.         alert("我是回调函数,我的名字叫:callback ,我接收到来自父函数的参数,参数是:"+data);  
    48.   
    49. }  
    50.   
    51.   
    52. </</span>script>  
    53. </</span>head>  
    54.   
    55. <</span>body>  
    56.     <</span>h2>a CallBack is a function that is passed as an argument to another function and is executed after its parent function has completed;</</span>h2>   
    57.     <</span>hr />  
    58.     <</span>a href="#" οnclick="javascript:test();">不传递参数的Callback</</span>a><</span>br />  
    59.     <</span>br />  
    60.     <</span>br />  
    61.     <</span>br />  
    62.     <</span>a href="#" οnclick="javascript:e(7,8,callback);">传递参数的Callback</</span>a>  
    63.     <</span>hr />  
    64.     </</span>body>  
    65.       
    66.     </</span>html>  

转载于:https://www.cnblogs.com/yangheng/p/6065725.html

你可能感兴趣的文章
路径依赖理论
查看>>
ActiveX多线程回调JavaScript
查看>>
剑指offer系列32-----对称二叉树的判断
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>
Python 编程快速上手 第 7章 模式匹配与正则表达式
查看>>
c#FTP应用---windows iis
查看>>
linux下调整java版本
查看>>
AutoCAD实用技巧基础篇
查看>>
Junit测试工具
查看>>
ubuntu 系统环境配置记录
查看>>
C# 流总结
查看>>
org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/input
查看>>
jumpserver安装与部署
查看>>
Apache,php配置
查看>>
Python特殊语法:filter、map、reduce、lambda
查看>>
vs2008 此安装不支持该项目类型
查看>>
C# Hash算法
查看>>
转:C语言深度剖析三
查看>>
Educational Codeforces Round 69 (Rated for Div. 2) A - DIY Wooden Ladder
查看>>