当前位置: 首页 > 面试题库 >

在AngularJS中,如何停止查询更改时正在进行的$ http调用

赖杰
2023-03-14
问题内容

我正在并行调用4到10 $ http get呼叫。但是在用户搜索操作之后,我需要显示到相同的视图,但结果不同。我填充了数据集和新的$
http查询调用。但是以前的$ http调用(承诺)仍在填充或起作用,影响$ scope。

我可能的肮脏解决方案是..

使用multi-
app(multimodule)页面,该页面可以具有由动态应用程序控制的动态区域。在用户事件上,删除与事件对应的元素。例如,搜索结果,如果我想使用不同的$
http调用显示来自不同来源的结果。如果用户使用new关键字搜索,我将删除结果ng-app元素并引导新元素。


问题答案:

您应该使用版本1.1.5,该版本可以取消$ http请求:

https://github.com/angular/angular.js/blob/master/CHANGELOG.md

// set up a dummy canceler
var canceler = $q.defer();

// use it as a timeout canceler for the request
$http({method: 'GET', url: '/some', timeout: canceler.promise}).success(
    function (data) { alert("this won't be displayed on cancel"); }
).error(
    function (data) { alert("this will be displayed on cancel"); }
)

// now, cancel it (before it may come back with data)
$rootScope.$apply(function() {
    canceler.resolve();
});

您可以对所有请求使用相同的取消器,并在开始新设置之前对其进行解决。



 类似资料:
  • 问题内容: 我从Linux Shell 连接到。我时不时地运行一个太大的查询。它可以打印,我已经知道这不是我的意思。我想停止查询。 击中(几次)会完全杀死并把我带回外壳,因此我必须重新连接。 是否可以在不杀死自己的情况下停止查询? 问题答案:

  • 问题内容: 如何以编程方式停止正在运行的mysql查询? 我面临的问题是查询是使用用户提供的数据构造的,并且偶尔可能需要很长时间才能执行(大型表15-3000万行)。我想为用户提供一个cancel- option,但不知道如何停止当前正在执行的mysql-query。 该应用程序是Java applet- servlet:用户在applet中指定条件,该条件将传递给servlet,在servlet

  • 问题内容: 我正在尝试制作一个简单的计时器,该计时器在指定的秒数后发出提示音。我设法使其正常工作,但是TimerTask在蜂鸣声后继续运行。现在我停止执行吗?这是我的代码: 问题答案: 您需要通过调用以下方法来取消计时器 这将取消任务,因此可以执行以下操作:

  • 问题内容: 我有一个Jenkinsfile或Jenkins管道,该管道创建一个新图像并从该图像中启动一个容器。第一次运作良好。但是在随后的运行中,我希望停止并删除先前的容器。我的Jenkinsfile如下: “ docker stop container”阶段失败。那是因为我不知道获取容器并停止它的正确API。谢谢。 问题答案: 就像在此Jenkinsfile中一样,您可以改用命令。 这样,您可以

  • 问题内容: 请先检查代码 app.js route.js home-controller.js stats-controller.js api.js 当我从家搬到stats时,API再次发送http请求,我有很多这样的http调用,我只粘贴了几行代码。 我需要做的是 取消 在routechangestart或成功时中止所有未决的http请求的操作 或任何其他方式来实现相同? 问题答案: 为此,我整

  • 问题内容: 简要描述;简介 将测试服务器重置为已知状态会导致我的测试失败,因为重置服务器时DataTables实例启动的Ajax请求正在进行中。我想通过在重置服务器之前停止DataTables请求来防止这种情况。 详细说明 我有一个在某些页面上使用DataTables的应用程序。这些数据表均执行服务器端查询以填充其表。 当我执行系统测试时,有时会发生争用情况: 测试运行程序启动测试服务器。 测试运