js回调函数(callback)理解

时间:2021-05-29 22:46:40

Mark!

js学习

不喜欢js,但是喜欢jquery,不解释。

自学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();}就失去了变量的灵活性。>

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

<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. }
    13. function B(c){
    14. return (-c);
    15. }
    16. </script>
    17. <form method="post" action="jsp3.jsp">
    18. <br><br>
    19. <input type="button" name="Submit" value="Submit" onclick="A(4,B(3));">
    20. </form>
    21. </body>
    22. </html>

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

<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>

  

<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. <</span>html>
    2. <</span>head>
    3. <</span>title>回调函数(callback)</</span>title>
    4. <</span>script language="javascript" type="text/javascript">
    5. function a(callback){
    6. alert("我来自父函数a");
    7. callback();
    8. }
    9. function b(){
    10. alert("我来自子(回调)函数 b");
    11. }
    12. function c(){
    13. alert("我来自子(回调)函数 c");
    14. }
    15. function test(){
    16. a(b);
    17. a(c);
    18. }
    19. //--------------------下面2个函数简单演示了从父函数传递给回调函数----------
    20. //Callback 就是一个参数名 这个参数代表的是一个函数 暂且不要管这个函数有没有参数
    21. //  。。。 应该还有其他写法吧?
    22. function e(m,n,Callback){
    23. var d = m+n;
    24. alert("一个从父函数e 产生的参数将要被传递给回调函数 ,这个参数是:"+d);
    25. //这里才写你想调用的函数---参数要正确
    26. Callback(d);
    27. //-----------
    28. }//     |
    29. //      |
    30. function callback(data){
    31. alert("我是回调函数,我的名字叫:callback ,我接收到来自父函数的参数,参数是:"+data);
    32. }
    33. </</span>script>
    34. </</span>head>
    35. <</span>body>
    36. <</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>
    37. <</span>hr />
    38. <</span>a href="#" onclick="javascript:test();">不传递参数的Callback</</span>a><</span>br />
    39. <</span>br />
    40. <</span>br />
    41. <</span>br />
    42. <</span>a href="#" onclick="javascript:e(7,8,callback);">传递参数的Callback</</span>a>
    43. <</span>hr />
    44. </</span>body>
    45. </</span>html>

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

js回调函数(callback)理解的更多相关文章

  1. js回调函数的理解

    js回调函数(callback)理解 Mark! 讲之前说一句 function say(){ alert(,,,,,,,,) } var say=function (){ alert(,,,,,,, ...

  2. JS回调函数&lpar;callback&rpar;

    在使用Jquery的时候,用到Callback(),回调函数的概念.而且很多. 比如: $.ajax({ url:"test.json", type: "GET&quot ...

  3. js回调函数&lpar;callback&rpar;(转载)

    学习jquery时,对回调函数感觉很困惑,在晚上找了半天,忽然发现这篇文章很浅显,基本说明了问题.故转载 原文: 自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗.迅速go ...

  4. JS回调函数(理解篇)

    概述: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而 ...

  5. 妙谈js回调函数的理解!

    很有共鸣,之前也是一直对回调函数感觉不明不白的,自己也看了不少解释说明.后来我觉得造成很多人对回调理解困难的一个原因就是,我在开发中见到的大多数使用了回调函数的情况都是直接上来就 传一个回调函数进去 ...

  6. js回调函数callback&lpar;&rpar;

    <a id="btnSave" href="javascript:void(0)" class="easyui-linkbutton" ...

  7. 关于js的callback回调函数的理解

    回调函数的处理逻辑理解:所谓的回调函数处理逻辑,其实就是先将回调函数的代码 冻结(或者理解为闲置),接着将这个回调函数的代码放到回调函数管理器的队列里面. 待回调函数被触发调用的时候,对应的回调函数的 ...

  8. 如何理解JS回调函数

    1.回调函数英文解释: A callback is a function that is passed as an argument to another function and is execut ...

  9. js中的回调函数的理解和使用方法

    js中的回调函数的理解和使用方法 一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为 ...

随机推荐

  1. &lbrack;css&rsqb;我要用css画幅画&lpar;七&rpar; - 哆啦A梦

    接着之前的[css]我要用css画幅画(六),今天画的有所不同,画的是哆啦A梦,我们小时候对他的称呼其实是小叮当机器猫. (PS:这次我要做的事情,很多人已经做过,这并不是什么创新,我只是在学习并记录 ...

  2. 构件图 Component Diagram

    构件图是显示代码自身结构的实现级别的图表.构件图由诸如源代码文件.二进制代码文件.可执行文件或动态链接库 (DLL) 这样的构件构成,并通过依赖关系相连接 下面这张图介绍了构件图的基本内容: 下面这张 ...

  3. PHP金字塔的输出

    相信学习语言的最初的时候,学到循环的时候,开始一定有种摸不着头脑,想砸电脑的冲动吧 这里就是记录我当初学习的时候,为了通过这个循环,学习的金字塔的输出 1.首先,要了解一个金字塔的输出就要去看它的表达 ...

  4. Windows系统的安装

    一.写在前面        笔者最近因为换工作,在家待业甚感无聊,于是想要整理一些在Windows系统的一些安装方法和下载资源,一来给自己做个备忘,二来把一些不成熟的想法分享出去,希望大家予以指正. ...

  5. 《火球——UML大战需求分析》&lpar;0&period;2&rpar;——目录

    说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...

  6. OLEDB和ODBC的区别

    ODBC(开放数据库互连):是Microsoft引进的一种早期数据库接口技术.它实际上是ADO的前身.早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层A ...

  7. gradle安装操作

    下载你所需要对应的版本,gradle-4.3.1-bin.zip 下载后解压到你想要的目录 设置环境变量 在cmd模式下查看,出现信息证明安装成功

  8. 腾讯开源的Paxos库PhxPaxos代码解读---Prepare阶段&lpar;一&rpar;

    简单的画了一下PhxPaxos在Prepare阶段的逻辑,主要是正常的逻辑,异常逻辑和超时后面再写了; 熟悉PhxPaxos代码最好的方法是编译运行sample目录下的三个例子,编译方法在另一篇博客已 ...

  9. HIVE配置错误信息

    原因:版本问题 解决方法:cp /root/hive/lib/当前的jlinexx.jar /root/hadoop/share/hadoop/yarn/lib

  10. 2D过渡模块的其他属性

    官网上关于过渡属性的值: 属性 描述 CSS transition 简写属性,用于在一个属性中设置四个过渡属性. 3 transition-property 规定应用过渡的 CSS 属性的名称. 3 ...