Я хотел бы обернуть некоторые функции 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
});
Функция $.ajax
возвращает объект обещания, который предлагает эти методы (done
, fail
, always
, самое главное then
). Просто верните этот объект из своей функции myWrapper
.
Вам нужно вернуть вызов ajax
если вы хотите это сделать...
function myWrapper(config) {
return $.ajax({
url: "http://url.com",
data: config
});
}
а затем позвоните, как вы сказали...
myWrapper({ config: "abc" }).done(function(data) {
// call is done
});
Я, очевидно, сделал предположения в приведенном выше коде, но он должен четко определить точку. Если нет, просто спросите :)
.fail
метод.fail
в своей.fail
я смогу использовать его как поведение по умолчанию и вернуть объект обещания?done
иfail
,then
не, например.