可能我对Node的事件循环理解得不够好。
假设我有一个包含异步函数async_func的函数foo。我有没有
//1
function foo(callback) {
//stuff here
async_func(function() {
//do something
callback();
});
//this eventually get executed
}或
//2
function foo(callback) {
//stuff here
async_func(function() {
//do something
return callback();
});
//never executed
}发布于 2013-08-14 03:37:33
实际上,在示例2中,每次都会执行//never executed。它是从回调返回的,而不是从包装函数返回的。
有时调用者实际上需要一些返回值,并且行为可以根据返回值进行更改。看到return callback()的另一个常见原因是,这是一种明显的缩短所在函数的方法。例如。
function doSomething(callback) {
something(function(err, data) {
if(err) return callback(err);
// Only run if no error
});
// Always run
}即使没有使用返回值,它也使用return来确保执行不会超过错误条件。你可以很容易地这样写,也有同样的效果。
function doSomething(callback) {
something(function(err, data) {
if(err) {
callback(err);
return;
}
// Only run if no error
});
// Always run
}https://stackoverflow.com/questions/18217589
复制相似问题