在下面的场景中,我有一个布尔值。根据结果,我调用完全相同的函数,唯一的区别是参数的数量。
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
});
}
目前感觉我不必要地重复了很多代码。有没有办法巩固这个,所以我不重复同样的事情?
答案 0 :(得分:2)
如果情况如此简单,那么只需将重复的函数保存在变量中:
var myBoolean = ...
var callback = function(err, result) {
if (err) throw err;
// process
}
if (myBoolean) {
retrieveData(param1, callback);
}
else {
retrieveData(param1, param2, callback);
}
答案 1 :(得分:0)
param2
为false
时,传递myBoolean
等于true
的对象
retrieveData({
param1: param1,
param2: (!myBoolean)? param2 : false
}, function(err, result) {
if (err) throw err;
// process
});
在retrieveData(obj, callback)
内,您将使用param1
和param2
obj.param1
和obj.param2
答案 2 :(得分:0)
重构retrieveData以使param2可选
retrieveData(param1, function(err, result), param2) {
if (err) throw err;
// process
});