我经常写几个小时的NodeJS代码,并且有一个常见的情况我不确定如何面对。给定以下异步函数调用(我们忘记了所需的回调):
function foo (callback) {
// Perform a task and call callback when finished
callback();
}
foo(); // We forget the callback
哪种方法更好?我找到两个选择:
foo()
功能更强大,将其添加为第一行:callback = callback || function () {}
。foo()
尝试调用callback()
并且它不存在时,让它崩溃。也许第三个选项(我更喜欢)是最好的选择:如果没有提供回调,则抛出自定义错误,作为foo()
的第一行。例如:
function foo (callback) {
if (!callback) {
throw new Error('No callback provided');
}
// More stuff here
callback();
}
我的问题是: 是否有任何众所周知的模式来解决这种情况?您认为哪种方法更好?你以不同的方式解决这个问题吗?
答案 0 :(得分:3)
这完全取决于你的回调是否是强制性的。
如果是强制性的,那么您应该快速失败并执行throw new Error('No callback provided');
。
如果是可选的,那么标准做法就是只要它存在就调用它。而不是创建一个新函数,只需在它将被调用的地方添加一个检查:
if ( callback ) {
callback();
}
或单行:
callback && callback();