Как переслать успешные и неудачные обратные вызовы функций jQuery?

0

Я хотел бы обернуть некоторые функции jQuery (а именно ajax) по нескольким причинам, таким как глобальная конфигурация параметров и, что более важно, возможность легко ее обменивать.

Мой вопрос в том, как я могу "переслать" .done() и .fail()? (Какой шаблон дизайна отвечает за это поведение jQuery?)

$.ajax({
  url: "http://url.com",
})
  .done(function( data ) {
    // do something
  })
.fail(function() {
    alert( "error" );
  });

Для пояснения, что я хотел бы сделать, это написать функцию, которая обертывает вышеприведенную функцию и ведет себя следующим образом:

myWrapper({config: "abc"}).done(function( data ) {
    // do something
});
Теги:
design-patterns
wrapper

2 ответа

1
Лучший ответ

Функция $.ajax возвращает объект обещания, который предлагает эти методы (done, fail, always, самое главное then). Просто верните этот объект из своей функции myWrapper.

  • 0
    Правильно ли я предположить, что эти методы снова возвращают один и тот же объект обещания? Так что, если я .fail метод .fail в своей .fail я смогу использовать его как поведение по умолчанию и вернуть объект обещания?
  • 1
    Проверьте их документы. done и fail , then не, например.
1

Вам нужно вернуть вызов ajax если вы хотите это сделать...

function myWrapper(config) {
    return $.ajax({
        url: "http://url.com",
        data: config
    });
}

а затем позвоните, как вы сказали...

myWrapper({ config: "abc" }).done(function(data) {
    // call is done
});

Я, очевидно, сделал предположения в приведенном выше коде, но он должен четко определить точку. Если нет, просто спросите :)

  • 0
    Достаточно ясно :) Я проверю это прямо сейчас, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню