Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 测试nodejs函数中的回调传递_Javascript_Node.js_Unit Testing_Callback_Sinon - Fatal编程技术网

Javascript 测试nodejs函数中的回调传递

Javascript 测试nodejs函数中的回调传递,javascript,node.js,unit-testing,callback,sinon,Javascript,Node.js,Unit Testing,Callback,Sinon,通过下面的代码示例,我想知道 函数testMe(输入、回调){ callback=callback | |函数(){};/*1*/ //进程输入。。。 进程(输入、函数(错误、结果){ 如果(错误){ 返回回调(新错误(“处理输入失败”);/*2*/ } 返回回调(null,result);/*3*/ }); } 我在位置1重置回调是一种好的做法吗 在你的情况下,不,这是一个反模式。查看testMe函数的语义,它被设计为接收输入并返回输出或错误。将回调设置为可选只会掩盖错误,延迟错误检测,并使

通过下面的代码示例,我想知道

函数testMe(输入、回调){
callback=callback | |函数(){};/*1*/
//进程输入。。。
进程(输入、函数(错误、结果){
如果(错误){
返回回调(新错误(“处理输入失败”);/*2*/
}
返回回调(null,result);/*3*/
});
}
我在位置1重置回调是一种好的做法吗

在你的情况下,不,这是一个反模式。查看
testMe
函数的语义,它被设计为接收输入并返回输出或错误。将回调设置为可选只会掩盖错误,延迟错误检测,并使调试变得更加神秘。如果调用者根本不需要输出,那么为什么首先要麻烦调用函数呢?默认回调函数实际上并没有帮助,因为在没有回调的情况下,良好的程序流和语义无法通过“fire and forget”/“side effects only”行为完成


旁白:您的示例实际上没有任何异步行为。如果您的实际代码实际上是这样的,那么它可以同步返回并同步抛出错误——在这种情况下,回调是不必要的,也不正确。但我怀疑您已经“简化”了您的示例,但您真正的代码实际上是异步的。

谢谢您给我一些要点。我刚刚编辑了示例代码。在您的示例的这个版本中,
testMe
除了
process
本身之外是完全无用的,您也可以直接调用
process
并完全删除
testMe
。如果您正在对
输入进行一些预处理
或对
输出进行一些后处理
,那么
testMe
的存在是合理的。