javascript - javascript 中特定调用的所有 ajax 回调的一个入口点

标签 javascript ajax backbone.js callback polling

当在我的单页浏览器应用程序中使用 JavaScript 与服务器通信时,我想提供一个回调函数,该函数始终在服务器回复后调用,无论结果是成功还是某种错误。

我需要这个的两种情况:

1)我想在等待服务器响应时禁用“保存”按钮,并在服务器响应错误或成功后再次启用它。

2)我有一个轮询机制,当服务器由于某种原因响应缓慢时,我想防止调用堆叠 - 我想等待一个轮询调用完成后再进行下一个。

我现在拥有的一个解决方案涉及确保两个函数(成功和错误)作为长方法链中的选项传递,这感觉像是一个脆弱且麻烦的解决方案(伪代码):

  function doCall() {
    framework1.callit({success : myCallback, error : myCallback})
  };

  framework123.callit = function(options) {
    options = options || {};
    if (options.error) {
      var oldError = options.error;
      options.error = function(errorStuff) {
        // callit error stuff
        oldError(errorStuff);
      } else {
        // callit error stuff
      }
    generalCallFunction(options);
  }

  function generalCallFunction(options) {
    options = // ... checking success and error once again to get general success and error stuff in there, plus adding more options
    ajax( blah, blah, options);
  }

我还有一个主干解决方案,其中我以与上面类似的方式监听同步事件和错误回调。

我总是担心错误或成功函数会在途中丢失,并且整个事情很难理解。

有什么框架或模式可以让这些东西尽可能简单吗?无论结果是错误还是成功,总要发生的一般事情是不是很奇怪?

最佳答案

您可以使用jQuery.ajax({此处详细信息...).always(callback);

或者,在主干

// logic to create model here
model.fetch().always(callback);

关于javascript - javascript 中特定调用的所有 ajax 回调的一个入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637274/

相关文章:

javascript - 让 TypeScript 为闭包编译器导出正确的函数名称?

jquery - JSONP - Access-Control-Allow-Origin 和 MIME 类型错误

javascript - 模型不触发解析函数

javascript - 单击时调用的函数影响具有相同类的所有元素

javascript - 有没有一种算法既能保证集合顺序又能保持O(1)的插入/删除?

javascript - 如何检测 base-64 编码的网络字体的 "onload"?

javascript - 将 mime Content-ID 添加到请求负载 (AJAX)

javascript - 下划线模板无法访问数据模型

javascript - Angular Js Curl -d http 请求

javascript - 如何暂停提交事件直到 AJAX 事件完成?