Javascript NodeJS中未提供回调模式

Javascript NodeJS中未提供回调模式,javascript,node.js,asynchronous,express,callback,Javascript,Node.js,Asynchronous,Express,Callback,我通常会花几个小时编写NodeJS代码,有一种常见的情况我不知道该如何面对。给定以下异步函数调用(其中我们忘记了所需的回调): 处理这个问题哪种方法更好?我有两个选择: 使foo()函数更加健壮,将其添加为第一行:callback=callback | | function(){} 当foo()试图调用callback()但它不存在时,让它崩溃 也许第三个选项(我更喜欢)是最好的:如果没有提供回调,则抛出自定义错误,如foo()的第一行。例如: function foo (callback) {

我通常会花几个小时编写NodeJS代码,有一种常见的情况我不知道该如何面对。给定以下异步函数调用(其中我们忘记了所需的回调):

处理这个问题哪种方法更好?我有两个选择:

  • 使
    foo()
    函数更加健壮,将其添加为第一行:
    callback=callback | | function(){}
  • foo()
    试图调用
    callback()
    但它不存在时,让它崩溃
  • 也许第三个选项(我更喜欢)是最好的:如果没有提供回调,则抛出自定义错误,如
    foo()
    的第一行。例如:

    function foo (callback) {
        if (!callback) {
            throw new Error('No callback provided');
        }
        // More stuff here
        callback();
    }
    
    我的问题是:
    有什么众所周知的模式来解决这种情况吗?你认为哪种方法更好?您是否以不同的方式解决此问题?

    这取决于您的回调是否为强制回调

    • 如果它是强制性的,那么您应该快速失败并执行
      抛出新错误(“未提供回调”)

    • 如果它是可选的则标准做法是,如果它存在,您只需调用它。不要创建新函数,只需在调用它的位置添加一个检查:

      if ( callback ) {
         callback();
      }
      
    或者在一行中:

    callback && callback();
    

    这完全取决于您的回调是否是强制的

    • 如果它是强制性的,那么您应该快速失败并执行
      抛出新错误(“未提供回调”)

    • 如果它是可选的则标准做法是,如果它存在,您只需调用它。不要创建新函数,只需在调用它的位置添加一个检查:

      if ( callback ) {
         callback();
      }
      
    或者在一行中:

    callback && callback();
    

    这完全取决于您的回调是否是强制的

    • 如果它是强制性的,那么您应该快速失败并执行
      抛出新错误(“未提供回调”)

    • 如果它是可选的则标准做法是,如果它存在,您只需调用它。不要创建新函数,只需在调用它的位置添加一个检查:

      if ( callback ) {
         callback();
      }
      
    或者在一行中:

    callback && callback();
    

    这完全取决于您的回调是否是强制的

    • 如果它是强制性的,那么您应该快速失败并执行
      抛出新错误(“未提供回调”)

    • 如果它是可选的则标准做法是,如果它存在,您只需调用它。不要创建新函数,只需在调用它的位置添加一个检查:

      if ( callback ) {
         callback();
      }
      
    或者在一行中:

    callback && callback();
    

    您是否尝试使用异步函数?它为无回调的设计带来了一些新的方法。您是否尝试使用异步函数?它为无回调的设计带来了一些新的方法。您是否尝试使用异步函数?它为无回调的设计带来了一些新的方法。您是否尝试使用异步函数?它为无回调的设计带来了一些新的方法。
    typeof callback==“function”
    在这里会更好吗?@BenFortune如果你有一个名为“callback”的变量,从语义上说它是type function,我宁愿调用它,如果它不是函数,代码就会失败。这样就更容易知道回调中存储了错误的内容。
    typeof callback==“function”
    是否在这里工作得更好?@BenFortune如果你有一个名为“callback”的变量,从语义上讲它是type function,我宁愿调用它,如果它不是函数,代码就会失败。这样就更容易知道回调中存储了错误的内容。
    typeof callback==“function”
    是否在这里工作得更好?@BenFortune如果你有一个名为“callback”的变量,从语义上讲它是type function,我宁愿调用它,如果它不是函数,代码就会失败。这样就更容易知道回调中存储了错误的内容。
    typeof callback==“function”
    是否在这里工作得更好?@BenFortune如果你有一个名为“callback”的变量,从语义上讲它是type function,我宁愿调用它,如果它不是函数,代码就会失败。这样就更容易知道回调中存储了错误的内容。