Как создать обертку для обратного вызова?

Я использую ajaxSubmit.

form.ajaxSubmit(successCallback);

Мне нужно создать оболочку для successCallback.

Как это сделать?

Я старался

form.ajaxSubmit(wrapperCallBack(successCallback));

var wrapperCallBack = function (successCallback) {
        debugger;
        changeState(false);
        successCallback(this);
    };

1 ответ

Решение

Ты довольно близко

form.ajaxSubmit(wrapperCallBack(successCallback));

var wrapperCallBack = function (successCallback) {
    return function() {
        changeState(false);
        return successCallback(this);
    };
};

Или как я предпочел бы написать это:

form.ajaxSubmit(wrapperCallBack(successCallback));

function wrapperCallBack(successCallback) {
    return function() {
        changeState(false);
        return successCallback(this);
    };
}

Там, wrapperCallback создает функцию, чтобы обернуть вокруг ее аргумента (successCallback аргумент) и возвращает эту функцию.

Оба из них предполагают, что вы собираетесь использовать wrapperCallBack создавать обертки более одного раза. Если вам нужен только один раз, то вы можете просто использовать встроенную анонимную функцию:

form.ajaxSubmit(function() {
    changeState(false);
    return successCallback(this);
});
Другие вопросы по тегам