javascript - 有没有更好的方法来覆盖 JS ajax 回调?

标签 javascript jquery callback

当 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/

相关文章:

javascript - 从 JQuery 中的 anchor 标记获取值/相对 url?

javascript - 等待一个函数返回一个值,然后再继续执行其他函数的其余命令

reactjs - 向 ReduxReducer 添加回调

javascript - 是否可以经常更改浏览器文档模式?

javascript - 使用谷歌地图自动完成时,ng 模型仅在点击后更新输入

asp.net - 将 HTML 表格导出到 Excel

jquery - 如何根据单击的按钮将表单值重置回原始值?

ruby-on-rails - 在创建 Rails 时跳过回调

javascript - 引用错误: bookshelf is not defined

javascript - 在所有浏览器中,单击事件在 Nexus S ICS (4.0.4) 上不起作用