V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
victorhe0601
V2EX  ›  JavaScript

callback 为什么没有被调用?

  •  
  •   victorhe0601 · 2019-03-22 10:57:37 +08:00 · 3938 次点击
    这是一个创建于 2072 天前的主题,其中的信息可能已经有所发展或是发生改变。
    const timeFuncRuntime = funcParameter => {

    console.log('parent function called');
    }

    const callbacks= () => console.log(' callback called');


    timeFuncRuntime(callbacks);


    我在 chrome 里边测试了,callbacks 函数没有被调用,为什么,应该被调用的啊。
    14 条回复    2019-03-22 13:24:04 +08:00
    myl0204
        1
    myl0204  
       2019-03-22 11:00:36 +08:00
    ```
    const timeFuncRuntime = funcParameter => {
    funcParameter()
    console.log('parent function called');
    }
    ```
    geelaw
        2
    geelaw  
       2019-03-22 11:00:41 +08:00 via iPhone
    那你再读一读代码看看?
    kzfile
        3
    kzfile  
       2019-03-22 11:01:47 +08:00   ❤️ 5
    在这种帖子我还可以找找自信
    Joyboo
        4
    Joyboo  
       2019-03-22 11:07:37 +08:00
    因为你本来就没有调用。。。
    1to3
        5
    1to3  
       2019-03-22 11:22:22 +08:00
    callback 不会自动调用. 它作为函数的参数传入函数内部. 需要你像调用其他函数一样, 显式调用它. 如 1 楼那样.
    FakeLeung
        6
    FakeLeung  
       2019-03-22 11:23:40 +08:00
    亲,这边建议您再仔细看看代码。
    victorhe0601
        7
    victorhe0601  
    OP
       2019-03-22 11:26:14 +08:00
    参见这个例子: https://stackoverflow.com/questions/824234/what-is-a-callback-function

    这个代码里边也没有显式调用,而且还有很多人都是这么解释的,参见: http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/
    https://codeburst.io/javascript-what-the-heck-is-a-callback-aba4da2deced

    因为看了上面的这些文档,我以为 callbacks 的执行逻辑就是这样:在 parent 函数执行完成之后,自动执行,不用显式调用?
    victorhe0601
        8
    victorhe0601  
    OP
       2019-03-22 11:32:25 +08:00
    我知道了,应该是 stackoverflow 这里边的例子不是针对 JS 的。只是一个范例。谢谢大家。所以:无论如何怎样传入,都需要显式调用才行。
    1to3
        9
    1to3  
       2019-03-22 11:39:09 +08:00   ❤️ 1
    @victorhe0601 JavaScript 需要你显式调用.
    yushenglin
        10
    yushenglin  
       2019-03-22 12:01:06 +08:00
    你第一个函数里面都没有调用,你传一个函数进去怎么可能调,函数体里面需要调用啊
    will0404
        11
    will0404  
       2019-03-22 12:21:23 +08:00
    不懂就问,前面说 JS 需要“显式调用”,难道别的语言有“隐式调用”?
    shintendo
        12
    shintendo  
       2019-03-22 13:10:39 +08:00   ❤️ 1
    我以为 callbacks 的执行逻辑就是这样:在 parent 函数执行完成之后,自动执行,不用显式调用?
    --------------
    要是这样,那回调的意义在哪里
    parent(callback);为什么不写成 parent();callback();
    回调是你不知道什么时候要执行,但是 parent 函数知道,所以你把你要做的事情装在 callback 里面交给 parent,让它来决定什么时候执行
    victorhe0601
        13
    victorhe0601  
    OP
       2019-03-22 13:22:04 +08:00
    谢谢各路神仙的指点。
    victorhe0601
        14
    victorhe0601  
    OP
       2019-03-22 13:24:04 +08:00
    尤其感谢 @shintendo 和 @1to3
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:42 · PVG 07:42 · LAX 15:42 · JFK 18:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.