Angular - 使用 Restangular 时中止 ajax 请求

2024-03-13

我有一个方法调用角度服务,从而通过该服务发出 ajax 请求。我需要确保如果多次调用此方法,则先前的请求将被中止(如果尚未解决)。

该方法可以被多次调用。这个方法其实是来自ngTable上的ngTableParams:

getData = function($defer, params) {

      myService.getRecord(params).then(function(res){ 
             ...
             $defer.resolve(res.Records);
      }); 
}

这是服务上的方法:

this.getRecords = function(params) {
    ...

    return Restangular
          .all('/api/records')
          .post(filters);
};

如果 ngTable 进行了 3 次调用,我希望前 2 次调用被中止(当然,除非它们返回得如此之快以致于它得到了解决)


你可以中止$http呼叫通过timeoutconfig 属性,可以是 Promise,在解决后中止请求。

所以在 reangular 中,你可以这样做

var abort = $q.defer();
Restangular.one('foos', 12345).withHttpConfig({timeout: abort.promise}).get();
abort.resolve();

例如,要将其与您的用例集成,您可以将其添加到您的服务中:

var abortGet;

this.getRecords = function(params) {
  ...
  if (abortGet) abortGet.resolve();
  abortGet = $q.defer();
  return Restangular
    .all('/api/records')
    .withHttpConfig({timeout: abortGet.promise})
    .post(filters);
}

这样调用getRecords如果尚未解决,总是中止之前的调用!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular - 使用 Restangular 时中止 ajax 请求 的相关文章

随机推荐

  • 如何找到贝塞尔曲线的中点?

    我想制作一条 命名 贝塞尔曲线 我希望它是一个单词命名的 这样我就不必担心自动换行 我通过P5制作贝塞尔曲线bezier sx sy c1x c1y c2x c2y ex ey 函数 我希望在贝塞尔曲线的中间显示一个字符串 但我不知道如何找
  • 获取双动画的当前值

    我有一个故事板 我正在其中使一个矩形向上移动 就像 MPH 汽车仪表中的针一样 所以 我让它从 0 到 60 我希望能够在它变化时获得它的当前值 这样我就可以使用该值来制作数字仪表 如何获取双动画从开始到结束的当前值 我有这样的事情 Dou
  • 如何获得两个集合的交集,同时不仅通过引用而且还通过它们的相同结构和条目识别相等的集合值/项目?

    我有两个交易两个Set实例 const set1 new Set name a name b lastname bb name c name d const set2 new Set name b name d 集合中的任何对象都将具有多个
  • 如何在 heroku 上启动 Python SimpleHTTPServer?

    我想在heroku 上启动Python HTTPServer 请注意 这不是 Python 框架 代码片段附在下面 我如何才能在 Heroku 上启动此服务器 我可以在本地计算机上运行该服务器 但我希望它部署在 Heroku 上 请提供见解
  • Web 应用程序作为服务自动更新,无需启动器

    如果应用程序是没有启动器的 Web 应用程序即服务 install4j 中的自动更新功能是否有效 我尝试了网络资源中提到的许多方法 但没有成功 请帮忙 我正在使用 install4j Windows 版本 6 1 6 编辑1 英戈 凯格尔
  • Bootstrap 4 - Scrollspy 不起作用

    我已经按照BS4中如何使用Scrollspy的文档进行操作 但它不起作用 那么我该如何解决它 我的身体有posistion relative 这是我的身体标签 这是导航栏的 HTML
  • 对 data.frame 或矩阵中的行求和

    我有一个非常大的数据框 其中行作为观察值 列作为遗传标记 我想创建一个新列 其中包含使用 R 的每个观察的选定列数的总和 如果我有 200 列和 100 行 那么我希望创建一个有 100 行的新列 其中包含第 43 至 167 列的总和 这
  • 异步套接字 - 处理错误的 socket.AcceptAsync 值

    Socket 类有一个方法 AcceptAsync 它返回 true 或 false 我原以为 false 返回值是一个错误条件 但在 Microsoft 为异步套接字提供的示例中 它们在检查失败后同步调用回调函数 如下所示 public
  • 如何制作一个钝角的按钮?

    如何制作一个钝角的按钮 我希望发生这样的事 我就这样来到这里 我的代码 Fiddle https jsfiddle net soledar10 nLt9qd5s box sizing border box btn display inlin
  • Android mkdirs() 不工作

    我正在开发我的第一个 Android 应用程序 在尝试创建目录来保存录制的视频文件时遇到了问题 我的主要活动有一个方法buttonOnClickRecord调用使用 android 相机的意图 我还在这个方法调用期间创建了一个文件 并且我正
  • 如何找出方法或函数的调用者是谁? [复制]

    这个问题在这里已经有答案了 我想编写一个调试函数或方法来帮助打印有用的信息 当它被调用时 我需要 调用对象的内存地址 如果由对象调用 调用者的方法签名 或方法的名称 或函数的名称 拥有该方法或函数的类名 是否可以在不传递一大堆参数的情况下获
  • 为什么我无法使用 Puppeteer 访问 hideFunction() 函数中的“窗口”?

    我有一个非常简单的傀儡师 https github com GoogleChrome puppeteer使用的脚本exposeFunction https github com GoogleChrome puppeteer blob mas
  • Swift 中数组的 endIndex 的正确行为是什么?

    endIndex 返回与 count 相同的值 这是正确的行为还是错误 var ar 1 2 3 4 ar count 4 ar endIndex 4 count是集合中的项目数 而endIndex is the Index 来自Colle
  • Android - 移动网络设置菜单(Jelly Bean)

    以下代码不适用于 Jelly Bean Android 4 1 final ComponentName cn new ComponentName com android phone com android phone Settings fi
  • ios 中纹理的多重采样渲染

    我正在尝试在启用多重采样的 ios 中渲染到纹理 然后在最终输出中使用该纹理 这可能吗 到目前为止 我只得到了黑色纹理或锯齿图像 我正在使用的代码是 glGenTextures 1 texture glBindTexture GL TEXT
  • C# 没有边界检查的 byte[] 比较

    我正在寻找性能高效的方法来比较两个 byte 是否相等 大小超过 1 MB 因此每个数组元素的开销应最小化 我的目标是超越SequenceEqual http msdn microsoft com en us library bb34856
  • python tkinter 列表框事件绑定

    我无法让事件绑定与 python tkinter 一起使用 我只是尝试单击并打印位置 但每次执行此操作时 结果都是 1 这是我的代码 from Tkinter import import Tkinter class make list Tk
  • spring junit 加载应用程序上下文进行测试

    我的 WEB INF 目录下有一些 XML 文件 歌词BaseApp servlet xml 休眠文件 数据源 xml beans xml servlet xml 导入其他 xml 文件
  • 如何旋转图像pygame的蒙版

    您好 我在旋转对象的蒙版时遇到问题 旋转蒙版仍处于与原始图像相同的位置 重点是在赛道上移动掩模以形成碰撞 def init self x y height width self x x width 2 self y y height 2 s
  • Angular - 使用 Restangular 时中止 ajax 请求

    我有一个方法调用角度服务 从而通过该服务发出 ajax 请求 我需要确保如果多次调用此方法 则先前的请求将被中止 如果尚未解决 该方法可以被多次调用 这个方法其实是来自ngTable上的ngTableParams getData funct