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

when is param2equalでオブジェクトを渡すfalsemyBooleantrue

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

内部retrieveData(obj, callback)で取得param1し、使用param2して取得しますobj.param1obj.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 に答える