【发布时间】: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 - 它认为它是一个返回某些东西的函数......我说的对吗?
-
a和b后跟调用括号,使a(b(c))的计算结果与var result = b(c); a(result);相同。 – 相关:Pass an extra argument to a callback function
标签: javascript node.js callback nested