我如何避免在下面的JavaScript情况下重复我自己?
在下面的场景中,我有一个布尔值。根据结果,我调用完全相同的函数,唯一的区别是参数的数量我如何避免在下面的JavaScript情况下重复我自己?,javascript,dry,Javascript,Dry,在下面的场景中,我有一个布尔值。根据结果,我调用完全相同的函数,唯一的区别是参数的数量 var myBoolean = ... if (myBoolean) { retrieveData(param1, function(err, result) { if (err) throw err; // process }); } else { retrieveData(param1, param2, function(err, result)
var myBoolean = ...
if (myBoolean) {
retrieveData(param1, function(err, result) {
if (err) throw err;
// process
});
}
else {
retrieveData(param1, param2, function(err, result) {
if (err) throw err;
// process
});
}
现在我觉得我在不必要地重复很多代码。有没有一种方法可以合并这个,这样我就不会重复同样的事情了?当
myBoolean
为true时,传递一个param2
等于false
的对象
retrieveData({
param1: param1,
param2: (!myBoolean)? param2 : false
}, function(err, result) {
if (err) throw err;
// process
});
在retrieveData(obj,callback)
中,您将使用obj.param1
和obj.param2
检索param1
和param2如果情况如此简单,则只需将重复的函数保存在变量中:
var myBoolean = ...
var callback = function(err, result) {
if (err) throw err;
// process
}
if (myBoolean) {
retrieveData(param1, callback);
}
else {
retrieveData(param1, param2, callback);
}
重构retrieveData以使param2成为可选的
retrieveData(param1, function(err, result), param2) {
if (err) throw err;
// process
})) 为什么不总是用3个参数调用函数?如果不需要发送param2值,可以发送null。然后在retrieveData
函数中,可以检查param2是否为null。