【问题标题】:Simple Nested Callback in Node.jsNode.js 中的简单嵌套回调
【发布时间】:2018-06-02 07:18:09
【问题描述】:

这是我能想到的最基本的嵌套回调,它给了我一个错误[posted below]

function a (callback) {
    console.log('first print a')
    callback()
}

function b (callback) {
    console.log('b after a')
    callback()
}

function c () {
    console.log('c after b')
}

a(b(c))

输出/错误 -

a 之后的 b
b 之后的 c
先打印一个
/nodejs/file.js:33
回调()
^
TypeError:回调不是函数

【问题讨论】:

  • b 没有返回任何内容,这意味着 a 正在被 undefined 调用。 a(undefined) -> 在a 内部,它尝试调用callback,但callback 不是函数——它是未定义的。
  • 但是'c'不是,怎么b的回调没有返回任何错误
  • 因为您没有调用c,所以您将c 作为参数传递给b 而没有先调用它。 a(b(c())) 产生错误,因为c 不返回任何内容,解析为a(b(undefined))
  • 哦,我想我现在明白了,因为我将 b(c) 传递给 a - 它认为它是一个返回某些东西的函数......我说的对吗?
  • ab 后跟调用括号,使 a(b(c)) 的计算结果与 var result = b(c); a(result); 相同。 – 相关:Pass an extra argument to a callback function

标签: javascript node.js callback nested


【解决方案1】:

你可以这样使用:

function a (callback) {
    console.log('first print a')
    return callback
}

function b (callback) {
    console.log('b after a')
    return callback
}

function c () {
    console.log('c after b')
}

a(b(c()))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多