可能我对 Node 的事件循环了解不够。
说我有一个函数foo
其中包含一个异步函数async_func
。我有吗
//1
function foo(callback) {
//stuff here
async_func(function() {
//do something
callback();
});
//this eventually get executed
}
or
//2
function foo(callback) {
//stuff here
async_func(function() {
//do something
return callback();
});
//never executed
}
实际上,在你的样本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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)