当 ajax 调用完成时,我需要根据触发的事件处理程序执行不同的操作。
这是我想到的:
// create object to manipulate later
save = {
save_to_db: function () {
$.ajax({
...snip...
success: function (result) {
save.callback();
}
})
},
callback: function () {
console.log('default callback');
}
};
// normal useage
$('#b_save').click(function (e) {
save.save_to_db()
});
// one off special useage
$('#b_add_to_basket').click(function (e) {
e.preventDefault();
save.old_callback = save.callback();
save.callback = function () {
console.log('overridden call back baby!!')
}
save.save_to_db();
save.callback = save.old_callback();
});
这个问题:Javascript callback functions with ajax传入回调函数,也许我缺少如何拥有可以覆盖的默认回调。
我的问题是,是否有更好的方法来完成此任务,并且可以对其进行优化吗?
最佳答案
从风格 Angular 来看,您可以使用函数生成器函数:
function make_saver_function(success_callback){
return function () {
return $.ajax({
...snip...
success: sucess_callback
});
};
}
这将允许您轻松创建自定义保存函数:
save_to_db = make_saver_function(function(){
console.log('default callback');
});
one_off_save_to_db = make_saver_function(function () {
console.log('overridden call back baby!!')
});
关于javascript - 有没有更好的方法来覆盖 JS ajax 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966083/