函数callback处理使用1或2callback?

哪种处理callback更正确?

传递个人成功和失败callback函数

function doAsynchCall(on_success,on_fail){ //do stuff if(condition === true){ on_success(data); } else { on_fail(error); } } 

或者在callback中处理成功/失败的回应?

 function doAsynchCall(callback){ //do stuff if(condition === true){ callback(null,data); } else { callback(error,null); } } 

我注意到两个版本都被使用了,两者都起作用,并且涉及到一定程度的个人select,但是我确定有一些事实可以支持为什么一个版本可能比其他版本更受欢迎,或者是使用权证的情况另一方面。

从function用户的angular度来看,我认为第一种方式更好。 原因是它为他/她留下了更less的工作,并允许更清晰的代码。 用户不必担心是否发生错误,他知道error handling程序将在错误的情况下被调用。

 // Clean, modularized logic function success() { // handle success } function error() { // handle error } doAsynchCall(success, error); 

第二种方式,只需调用该函数,用户不知道是否发生了错误,并且基本上必须再次执行if语句的工作以确定继续。

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

然而,从functiondevise者的angular度来看,情况基本上是颠倒的。 对于他/她来说,总是将错误作为第一个parameter passing并且让用户确定如何处理以及是否分支出错是比较容易的。

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