【发布时间】:2014-09-01 20:52:31
【问题描述】:
我通常会写几个小时的 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();
}
我的问题是: 是否有任何众所周知的模式来解决这种情况?您认为哪种方法更好?您是否以其他方式解决此问题?
【问题讨论】:
-
您是否尝试将Promises 用于异步功能?它带来了一些无需回调的设计新方法。
标签: javascript node.js asynchronous express callback