qq_35883107
qq_35883107
2018-03-06 09:37
采纳率: 66.7%
浏览 3.9k
已采纳

js中 return callback() 什么意思呀

return callback() 什么意思呀
明明没有return callback()这个函数

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

13条回答 默认 最新

  • beblong
    焙焙龙 2018-03-06 10:46
    已采纳

    假设你是一个蜀国将军,这个callback就是诸葛亮在你出征的时候交给你的锦囊,告诉你打完仗之后,就拆开锦囊,做里面的事情
    callback()的意思就是执行这个锦囊
    return callback()的意思就是,做完之后告诉军师结果如何

    点赞 评论
  • SmallYard
    SmallYard 2018-03-06 09:37

    callback是一个方法函数,在return出结果的时候同时执行这个方法函数。如果这个函数有结果返回,就会获得这个函数的执行结果

    点赞 评论
  • Plucky123
    Plucky123 2018-03-06 09:42

    返回一个函数 那个函数再看他返回一个什么值

    点赞 评论
  • yechengy
    yechengy 2018-03-06 09:45

    这是回调函数,回调函数是你写一个函数,让预先写好的系统来调用。你去调用系统的函数,是直调。让系统调用你的函数,就是回调。但假如满足于这种一句话结论,是不会真正明白的。回调函数可以看成,让别人做事,传进去的额外信息。比如 A 让 B 做事,根据粒度不同,可以理解成 A 函数调用 B 函数,或者 A 类使用 B 类,或者 A 组件使用 B 组件等等。反正就是 A 叫 B 做事。当 B 做这件事情的时候,自身的需要的信息不够,而 A 又有。就需要 A 从外面传进来,或者 B 做着做着再向外面申请。对于 B 来说,一种被动得到信息,一种是主动去得到信息,有人给这两种方式术语,叫信息的 push,和信息的 pull。A 调用 B,A 需要向 B 传参数。如简单的函数:int max(int a, int b);
    要使用这函数,得到两者最大的值, 外面就要传进来 a, b。这个很好理解。void qsort(void , size_t, size_t, int ()(const void *, const void *));
    而这个函数用于排序,最后一个参数就是回调函数,似乎就比较难以理解了。这是因为人为割裂了代码和数据。我们暂停一下,看看计算机中比较诡异的地方,也就是代码(code)和数据(data)的统一。这是一个槛,如果不跨过这槛,很多概念就不清楚。我们常常说计算机程序分成 code 和 data 两部分。很多人会理解成,code 是会运行的,是动态的,data 是给 code 使用,是静态的,这是两种完全不同的东西。其实 code 只是对行为的一种描述,比如有个机器人可以开灯,关灯,扫地。如果跟机器人约定好,0 表示开灯,1 表示关灯,2 表示扫地。我发出指令串,0 1 2,就可以控制机器人开灯,关灯,扫地。再约定用二进制表示,两位一个指令,就有一个数字串,000111,这个时候 000111 这串数字就描述了机器人的一系列动作,这个就是从一方面理解是 code,它可以控制机器人的行为。但另一方面,它可以传递,可以记录,可以修改,也就是数据。只要大家都协商好,code 就可以编码成 data, 将 data 解释运行的时候,也变成了 code。code 和 data 可以不用区分,统一称为信息。既然 int max(int a, int b) 中 int,double 等表示普通 data 的东西可以传递进去,自然表示 code 的函数也可以传进去了。有些语言确实是不区分的,它的 function(表示code)跟 int, double 的地位是一样的。这种语言就为函数是第一类值。而有些语言是不能存储函数,不能动态创建函数,不能动态销毁函数。只能存储一个指向函数的指针,这种语言称为函数是第二类值。另外有些语言不单可以传递函数,函数里面又用到一些外部信息(包括code, data)。那些语言可以将函数跟函数所用到的信息一起传递存储。这种将函数和它所用的信息作为一个整体,就为闭包。过了这个槛,将代码和数据统一起来,很多难以理解的概念就会清晰很多。现在我们再回头看看回调函数。回调函数也就是是 A 让 B 做事,B 做着做着,信息不够,不知道怎么做了,就再让外面处理。比如上述排序例子,A 让 B 排序,B 会做排序,但排序需要知道哪个比哪个大,这点 B 自己不知道,就需要 A 告诉它。而这种判断大小本身是一种动作,既然 C 语言中不可以传进第一值的函数,就设计成传递第二值的函数指针,这个函数指针就是 A 传向 B 的信息,用来表示一个行为。这里本来 A 调用 B 的,结果 B 又调用了 A 告诉它的信息,也就叫 callback。再比如 A 让 B 监听系统的某个消息,比如敲了哪个键。跟着 B 监听到了,但它不知道怎么去处理这个消息,就给外面关心这个消息,又知道怎么去处理这个消息的人去处理,这个处理过程本身是个行为,既然这个语言不可以传递函数,又只能传一个函数指针了。假如我将函数指针存储下来,以后就可以随时调用。代码和数据都是信息,数据可以存储下来,用来表示行为的函数自然也可以存储下来。跟着有些人有会引申成,什么注册啊,通知啊等等等。假如 B 做监听,C, D, E, F, G, H 告诉 B 自己有兴趣知道这消息,那 B 监听到了就去告诉 C,D,E,F,G等人了,这样通知多人了,就叫广播。理解后进行思考,根本不用关心术语。术语只是为了沟通,别人要告诉你,或者你去告诉人,使用的一套约定的词语。同一个东西往往有不同术语。再将回调的概念泛化,比如某人同时关心 A, B, C, D, E, F 事件,并且这些事件是一组的,比如敲键盘,鼠标移动,鼠标点击等一组。将一组事件结合起来。在有些语言就映射成接口,接口有 N 个函数。有些语言就映射成一个结构,里面放着 N 个函数指针。跟着就不是将单个函数指针传进去,而是将接口,或者函数指针的结构传进去。根据不同的用途,有些人叫它为代理,监听者,观察者等等。实际上也是将某种行为存储下来,以后有需要再进行调用。跟回调函数在更深层次是没有区别的。

    点赞 评论
  • qq_37608937
    qq_37608937 2018-03-06 09:55

    回调函数,用来执行完方法的回调

    点赞 评论
  • yizhizou123ABC
    yizhizou123ABC 2018-03-06 10:10

    callback是一个回调函数,在return出结果的时候同时执行这个回调函数。具体看函数中的逻辑

    点赞 评论
  • weixin_38503925
    weixin_94686184 2018-03-06 10:22

    举个例子:
    function foo(b,callback){
    if(b)
    callback("b is true");
    }
    foo(true,function function_name(argument) {
    console.log(argument);
    });
    不知道看懂没有,给分把,没b下载东西了

    点赞 评论
  • weixin_40695212
    记忆中的沉淀 2018-03-06 11:10

    http://www.jb51.net/article/54641.htm
    这个链接你可以看一下

    点赞 评论
  • weixin_38820418
    Vsrserk 2018-03-06 11:14

    callback()执行完之后应该会有一个返回值,这个是在你的函数中设置的,return的一个作用是返回当前函数所要求的返回值。
    所以,意思就是,返回callback()的返回值。

    点赞 评论
  • jy88168
    jy88168 2018-03-06 15:13

    回调函数,用来执行完方法的回调试试

    点赞 评论
  • en_joker
    孤芳不自賞 2018-03-07 09:04

    你先把代码截图出来,再问问题,要不然不能准确的找出问题原因所在。

    点赞 评论
  • yinyan1314
    yinyan1314 2018-03-08 09:04

    js函数的参数是允许传递函数的,你的这个callback 应该是你这个函数的参数,而这个参数也是函数,这个时候你不要搜callback,你要搜调用你这个函数的传递的参数是什么函数。

    点赞 评论
  • weixin_41316842
    Leader755 2019-04-05 12:26

    :callback()与return callback()的区别都是回调函数,只是使用return时会返回阻止回调函数后的继续执行。即为就阻止继续往下执行。

    点赞 评论

相关推荐