Javascript 什么时候应该使用错误第一次回调?

Javascript 什么时候应该使用错误第一次回调?,javascript,node.js,Javascript,Node.js,定义函数回调处理程序有两种常用方法: 传递单个成功和失败回调函数 function doAsynchCall(on_success,on_fail){ //do stuff if(condition === true){ on_success(data); } else { on_fail(error); } } 或者在同一回调中处理成功/失败响应(错误优先、错误返回、节点样式) 我注意到两个版本都得到了使用,两个

定义函数回调处理程序有两种常用方法:

传递单个成功和失败回调函数

function doAsynchCall(on_success,on_fail){
    //do stuff
    if(condition === true){
        on_success(data);
    }
    else
    {
        on_fail(error);
    }
}
或者在同一回调中处理成功/失败响应(错误优先、错误返回、节点样式)

我注意到两个版本都得到了使用,两个版本都有效,而且都涉及到一定程度的个人选择,但我确信有一些事实可以支持为什么一个版本可能比另一个版本更受欢迎,或者在使用需要一个版本比另一个版本更受欢迎的情况下

TL;博士
使用错误优先回调的优点和缺点是什么?

从函数用户的角度来看,我认为第一种方法更好。原因是它为他/她留下更少的工作,并且允许更干净的代码。用户不必担心是否发生了错误,他知道在发生错误时将调用他的错误处理程序

// Clean, modularized logic

function success() {
  // handle success
}

function error() {
  // handle error
}

doAsynchCall(success, error);
function doAsynchCall(callback) {
    let data = getDataOrAnErrorHappens(); 
    callback(error, data);
}
在第二种方法中,通过简单地调用函数,用户不知道是否发生了错误,实际上必须再次执行
if
语句以确定从何处继续

// does essentially the same stuff as doAsynchCall
function handler(error, data) {
  if (error !== null) {
    // handle error
  } else {
    // handle success
  }
}

doAsynchCall(handler):
但是,从函数设计器的角度来看,情况基本相反。对于他/她来说,总是将错误作为第一个参数传递,并让用户决定如何处理以及是否转移错误,这会更容易

// Clean, modularized logic

function success() {
  // handle success
}

function error() {
  // handle error
}

doAsynchCall(success, error);
function doAsynchCall(callback) {
    let data = getDataOrAnErrorHappens(); 
    callback(error, data);
}