уменьшить нет. линий


У меня есть следующие типа много функций так много, если условия там есть какой-то способ, чтобы уменьшить нет. линий.

enter: function(request, callback, callback1){
    request.on={};
    if(callback==undefined && NodeClientUI.initdata.join!=undefined){
      callback=NodeClientUI.initdata.join;
      request.on.join=function(data){
        callback(data);
      };
    }else if(callback!=undefined ){
      request.on.join=function(data){
        callback(data);
      };
    }
    if(callback1==undefined && NodeClientUI.initdata.occupant!=undefined){
      callback1=NodeClientUI.initdata.occupant;
      request.on.occupant=function(data){
        callback1(data);
      };
    }else if(callback1!=undefined ){
      request.on.occupant=function(data){
        callback1(data);
      };
    }
  };

Нет paramerter обратные вызовы могут быть увеличены во многих функциях.

Пожалуйста, предложите .



188
3
задан 14 июля 2011 в 08:07 Источник Поделиться
Комментарии
1 ответ

Попробуйте это:

enter: function(request, callbacks){
request.on={};
for(var key in callbacks) {
var callback = callbacks[key];
if(callback === undefined) {
callback = NodeClientUI.initData[key];
}
request.on[key]=function(data){
callback(data);
}
}
};

Это позволяет звонить с обратные вызовы, определенные как:

var callbacks = {};
callbacks['join'] = function(data) { // join logic ... };
callbacks['occupant'] = function(data) { // occupant logic ... };
callbacks['stuff'] = undefined; // Takes on value of NodeClientUI.initData.stuff
...

Запрос будет Вам назначена в том же порядке. Если вы не можете пройти карту обратных вызовов таким образом, вы могли бы создать функцию, которая создает глобальную переменную обратных вызовов для использования внутри метода (просто игнорировать параметр обратного вызова, переданной для ввода вместо метода и использовать обратные вызовы):

var callbacks = {};
function addCallback(key, callback) {
callbacks[key] = callback;
}

2
ответ дан 14 июля 2011 в 01:07 Источник Поделиться