如何在以下JavaScript情况下避免重复自己?

时间:2012-07-03 07:27:35

标签: javascript dry

在下面的场景中,我有一个布尔值。根据结果​​,我调用完全相同的函数,唯一的区别是参数的数量。

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
    });
}

目前感觉我不必要地重复了很多代码。有没有办法巩固这个,所以我不重复同样的事情?

3 个答案:

答案 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)

param2false

时,

传递myBoolean等于true的对象

retrieveData({ 
       param1: param1,
       param2: (!myBoolean)? param2 : false 
     }, function(err, result) {
        if (err) throw err;
        // process
    });

retrieveData(obj, callback)内,您将使用param1param2

检索obj.param1obj.param2

答案 2 :(得分:0)

重构retrieveData以使param2可选

retrieveData(param1, function(err, result), param2) {
   if (err) throw err;
   // process

});