0

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

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

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

4

3 回答 3

2

如果情况像这样简单,那么只需将重复的函数保存在一个变量中:

var myBoolean = ...
var callback = function(err, result) {
    if (err) throw err;
    // process
}
if (myBoolean) {
    retrieveData(param1, callback);
}
else {
    retrieveData(param1, param2, callback);
}
于 2012-07-03T07:31:05.563 回答
0

传递一个param2等于falsewhenmyBoolean的对象true

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

在里面retrieveData(obj, callback)你会检索param1到 and param2with obj.param1andobj.param2

于 2012-07-03T07:30:04.837 回答
0

重构retrieveData 以使param2 可选

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

});

于 2012-07-03T07:37:15.283 回答