2012-01-15 5 views
5

Есть ли лучший способ создать функцию обратного вызова для некоторой случайной функции?Лучший способ создать функцию обратного вызова

var showObj = function(obj,callback) { 
    return setTimeout(function() { 
     if(opts.centerObj == true) { 
      var cssProps = getProps(obj); 
      obj.css(cssProps).fadeIn('slow'); 
     } 
      else { 
       obj.fadeIn('slow'); 
      } 
     if(typeof callback == 'function') { 
      callback.call(this); 
     } 
    }, 1500); 
} 

Функция обратного вызова не имеет какого-либо параметра, когда я использую его, я только сделать так:

showObj(obj,function(){ 

/* Some Callback Function */ 

}); 
+0

Итак, ваш вопрос заключается в том, есть ли лучший способ, чем передавать анонимную функцию 'showObj' или что? –

+0

Что не так с вашей текущей реализацией? – TJHeuvel

+0

@Felix Kling, Нет, если мой синтаксис верен, функция работает нормально (функция обратного вызова), если я его вызываю, а также если есть другой способ добавить/определить функцию обратного вызова к некоторой случайной функции. – Roland

ответ

3

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

Мое единственное предложение было бы там, а не для вызова функции с .call(). Если вам не нужно передавать текущий контекст, просто вызовите callback();. То есть, потому что .call() и .apply() invokations до 30% медленнее.

2

Это одна из самых полных функций обратного вызова, которые я видел. Таким образом, ответ отрицательный, это один из лучших.