Лучший способ создать функцию обратного вызова - PullRequest
5 голосов
/ 15 января 2012

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

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

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

showObj(obj,function(){

/* Some Callback Function */

});

Ответы [ 2 ]

3 голосов
/ 15 января 2012

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

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

2 голосов
/ 15 января 2012

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

...