c*********e 发帖数: 16335 | 1 node.js里调用了callback之后,还会回到函数里。比如
function test(item,cb){
if (item == 1) {
cb(1);
}
if (item == 1) {
cb(2);
}
}
test(1,cb);就会2次调用cb函数。
是这样的吗? |
l**********n 发帖数: 8443 | |
l*********s 发帖数: 5409 | |
p*****2 发帖数: 21240 | 4 他每次发帖都差不多吧?
【在 l*********s 的大作中提到】 : 这个问题有点吐槽无力啊。:-)
|
h**********c 发帖数: 4120 | 5 你是不是想说cb(1)出现了exception,或者超时不返回,会出现什么状况,看来有些人
理解力有问题,或者不太门清自己在干什么
【在 c*********e 的大作中提到】 : node.js里调用了callback之后,还会回到函数里。比如 : function test(item,cb){ : if (item == 1) { : cb(1); : } : if (item == 1) { : cb(2); : } : } : test(1,cb);就会2次调用cb函数。
|
c*********e 发帖数: 16335 | 6 不是。最近碰到一个node.js bug,
trace log里说,已经call了callback一次了,不能多次call一个callback.
这就是说,如果我的代码写成下面的形式,cb(1)执行完后,代码还会接着执行下面的
cb(2).
这个就象java的servlet里面一样,forward之后还要加return;
httpServletRequest.getRequestDispatcher("/home.jsp").forward(request
, response);
return;
你是不是想说cb(1)出现了exception,或者超时不返回,会出现什么状况,看来有些人
理解力有问题,或者不太门清自己在干什么
【在 h**********c 的大作中提到】 : 你是不是想说cb(1)出现了exception,或者超时不返回,会出现什么状况,看来有些人 : 理解力有问题,或者不太门清自己在干什么
|
h**********c 发帖数: 4120 | 7 恩好坑,颇有引蛇出洞的大手笔
Dear petitioner,
Hope you have reproducible evidence to support your claim and prove your
INNOCENCE.
request
【在 c*********e 的大作中提到】 : 不是。最近碰到一个node.js bug, : trace log里说,已经call了callback一次了,不能多次call一个callback. : 这就是说,如果我的代码写成下面的形式,cb(1)执行完后,代码还会接着执行下面的 : cb(2). : 这个就象java的servlet里面一样,forward之后还要加return; : httpServletRequest.getRequestDispatcher("/home.jsp").forward(request : , response); : return; : : 你是不是想说cb(1)出现了exception,或者超时不返回,会出现什么状况,看来有些人
|
c*********e 发帖数: 16335 | 8 我本来也不信,上周debug出了这么一error message,改了之后error message就没了。
你说神奇不?
还好这有一证据
https://github.com/caolan/async
---------------
Multiple callbacks
Make sure to always return when calling a callback early, otherwise you will
cause multiple callbacks and unpredictable behavior in many cases.
async.waterfall([
function (callback) {
getSomething(options, function (err, result) {
if (err) {
callback(new Error("failed getting something:" + err.message));
// we should return here
}
// since we did not return, this callback still will be called and
// `processData` will be called twice
callback(null, result);
});
},
processData
], done)
It is always good practice to return callback(err, result) whenever a
callback call is not the last statement of a function.
【在 h**********c 的大作中提到】 : 恩好坑,颇有引蛇出洞的大手笔 : Dear petitioner, : Hope you have reproducible evidence to support your claim and prove your : INNOCENCE. : : request
|
n*****t 发帖数: 22014 | 9 callback 只是一个 func ,跟其他任何 func 没有区别,记住这点就没问题了。
当然,node 可以检测到这点,说明可以从 platform 层面避免。
【在 c*********e 的大作中提到】 : node.js里调用了callback之后,还会回到函数里。比如 : function test(item,cb){ : if (item == 1) { : cb(1); : } : if (item == 1) { : cb(2); : } : } : test(1,cb);就会2次调用cb函数。
|
c*********e 发帖数: 16335 | 10 en,你有过node.js编程经验。
【在 n*****t 的大作中提到】 : callback 只是一个 func ,跟其他任何 func 没有区别,记住这点就没问题了。 : 当然,node 可以检测到这点,说明可以从 platform 层面避免。
|
|
|
n*****t 发帖数: 22014 | 11 其实还有一个相关的,express 里 res.send 之后还会继续执行
【在 c*********e 的大作中提到】 : en,你有过node.js编程经验。
|
n*****t 发帖数: 22014 | 12 Always return callback 也不一定,有时候你希望先给 client response,然后慢慢
处理一些杂活
will
【在 c*********e 的大作中提到】 : 我本来也不信,上周debug出了这么一error message,改了之后error message就没了。 : 你说神奇不? : 还好这有一证据 : https://github.com/caolan/async : --------------- : Multiple callbacks : Make sure to always return when calling a callback early, otherwise you will : cause multiple callbacks and unpredictable behavior in many cases. : async.waterfall([ : function (callback) {
|
h**********c 发帖数: 4120 | 13 没太看懂,好象应该是callback就完了,你的引用又说,可能没完。
其实觉得就象java的exception handling,有io关不死,只能强制推出,但这时候必须
处理所有信号,这在操作系统里是最繁琐的地方。也许node提供这种解决方案,并且跨
平台,mark.
继续观望
【在 c*********e 的大作中提到】 : node.js里调用了callback之后,还会回到函数里。比如 : function test(item,cb){ : if (item == 1) { : cb(1); : } : if (item == 1) { : cb(2); : } : } : test(1,cb);就会2次调用cb函数。
|
h**********c 发帖数: 4120 | 14 忘了,js有没有exception,如果cb(1)throw exception,那么可能程序回来,把cb(2)
执行一遍,这种情况下,应用中说加return 是对的吧?
【在 c*********e 的大作中提到】 : node.js里调用了callback之后,还会回到函数里。比如 : function test(item,cb){ : if (item == 1) { : cb(1); : } : if (item == 1) { : cb(2); : } : } : test(1,cb);就会2次调用cb函数。
|
c*********e 发帖数: 16335 | 15 nickmit的回答很精准,一看他就是编过node.js程序的。
【在 h**********c 的大作中提到】 : 没太看懂,好象应该是callback就完了,你的引用又说,可能没完。 : 其实觉得就象java的exception handling,有io关不死,只能强制推出,但这时候必须 : 处理所有信号,这在操作系统里是最繁琐的地方。也许node提供这种解决方案,并且跨 : 平台,mark. : 继续观望
|