我正在编写一个需要回调的
javascript函数.如果出现问题,回调将传递一个错误参数.
什么是最好/最标准的呼叫约定?
>回调的错误参数应该是第一个还是最后一个?
>我应该传递’errorMsg’字符串,还是新的Error(‘errorMsg’)对象?
即,更正确的是 – 这段代码:
foo = function(bar,callback) { ... if (error) { callback('troz not found'); } else { callback(null,result); } }
或者这段代码:
foo = function(bar,callback) { ... if (error) { callback(null,'troz not found'); } else { callback(result); } }
或这个:
foo = function(bar,new Error('troz not found')); } else { callback(result); } }
如果相关,我的代码将用作NodeJS模块和基于浏览器的javascript库.
解决方法
你应该为你的图书馆选择一个约定并坚持下去;否则,它是任意的. JavaScript中有许多不同的处理错误的方法:
>同时采取“成功”和“错误”回调.
>采取单一回调来处理“成功”和“错误”案件.
>具有默认“错误”处理程序的注册机制,使错误处理程序在所有其他调用上可选,使用适当的立即或回退错误回调.
结合:
>不使用参数来进行错误回调.
>使用布尔值表示成功/失败.
>使用字符串来封装错误的性质.
>使用一些更复杂的“Result”对象来封装成功/失败和结果.
>使用一些复杂的对象来封装详细的故障信息.
真的,这完全取决于你.这也取决于你想要做什么.例如,如果您不打算对故障信息做任何事情,那么构建/传递额外信息可能不值得花费.但是,您可能希望将大量详细的故障信息传递给用户或返回API调用者,在这种情况下,它很有意义.
选择一个约定,坚持下去.除此之外,这完全取决于你.