Вы можете обернуть каждый обратный вызов следующим образом:
function cbWrapper(fn) {
return function() {
try {
return(fn.apply(this, arguments));
} catch(e) {
// handle all your exceptions here
}
};
}
Таким образом, когда вы передаете обратный вызов Ajax-вызову, вместо фактического обратного вызова вы передаете cbWrapper(callback)
.
$.get(url, cbWrapper(myRealCallback));
Или встроенная анонимная версия будет выглядеть так:
$.get(url, cbWrapper(function() {
// actual callback code here
}));
Более продвинутый способ сделать это - переопределить $.get()
своей собственной реализацией, которая автоматически оборачивает обратный вызов, но это становится сложным, потому что jQuery настолько гибок в отношении того, какие аргументы фактически передаются. Из-за этого и из-за того, что вам нужно переопределить один конкретный аргумент, чтобы сделать эту работу, вы должны будете продублировать весь их код обнаружения аргументов, который выясняет, какие аргументы присутствуют, а какие соответствуют фактическим параметрам функции. Этот код немного грязный. Это выполнимо и, вероятно, не сломается, потому что если jQuery сломает его, то существующий код jQuery сломается, но он не очень чистый.
Если это весь ваш собственный код, вы можете просто сделать свою собственную версию $.get()
, которая не так гибка с позициями аргументов, и переключить весь ваш код, чтобы использовать ее вместо фактического $.get()
:
jQuery.fn.myGet = function(url, fn) {
return(jQuery.get(url, cbWrapper(fn)));
}