问题标签 [request-cancelling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3529 浏览

iphone - cancelPreviousPerformRequestWithTarget 没有取消我之前用 performSelector 启动的延迟线程

我已经启动了一个延迟线程,performSelector但用户仍然可以在当前视图上点击后退按钮,从而导致调用 dealloc。发生这种情况时,我的线程似乎仍然被调用,这导致我的应用程序崩溃,因为线程试图写入的属性已被释放。为了解决这个问题,我试图打电话cancelPreviousPerformRequestsWithTarget取消之前的请求,但它似乎不起作用。下面是一些代码片段。

我在这里做错了什么吗?该方法myStopUpdatingLocation在我调用执行请求的同一类中定义。

多一点背景。我试图实现的功能是找到用户位置,在谷歌搜索该位置周围的一些位置,并在地图上显示几个注释。在viewDidLoad我开始使用 更新位置CLLocationManager。如果我在超时内没有达到我想要的准确度,我会在 6 秒后建立超时,我正在使用 aperformSelector来执行此操作。可能发生的情况是用户单击视图中的后退按钮,即使我的所有属性都已释放导致崩溃,该线程仍将执行。

提前致谢!

詹姆士

0 投票
6 回答
411 浏览

c# - 如何取消深度嵌套的进程

我有一堂课是“经理”类的课。它的功能之一是指示类的长时间运行的进程应该关闭。它通过在类中设置一个名为“IsStopping”的布尔值来做到这一点。

现在,DoWork() 是一个巨大的函数,我决定将它重构出来,并作为该过程的一部分将其中的一些分解为其他类。问题是,其中一些类也有长时间运行的函数,需要检查 isStopping 是否为真。

我在这里有什么选择?

我考虑过通过引用传递 isStopping,我不太喜欢,因为它需要有一个外部对象。我更愿意使附加类尽可能独立且无依赖。

我也考虑过制作 isStopping 一个属性,然后让它调用一个可以订阅内部类的事件,但这似乎过于复杂。

另一种选择是创建一个“进程取消令牌”类,类似于 .net 4 任务使用的类,然后将该令牌传递给这些类。

你是如何处理这种情况的?

编辑:

还要考虑 MoreWork 可能有一个 EvenMoreWork 对象,它实例化并调用一个可能长时间运行的方法......等等。我想我正在寻找的是一种能够在调用树下向任意数量的对象发出信号的方法,以告诉他们停止正在做的事情并清理并返回。

编辑2:

感谢您到目前为止的回复。似乎对使用方法没有真正的共识,每个人都有不同的意见。似乎这应该是一种设计模式......

0 投票
3 回答
2118 浏览

c# - 如何暂停 BackgroundWorker?或类似的东西

我正在使用 a通过在循环中BackgroundWorker调用来下载一些网站。WebClient.DownloadString我希望用户在下载内容的过程中取消选项,所以CancelAsync每当我发现它CancellationPending在循环中间时我都会打电话。

但是现在我注意到该函数DownloadString有时会冻结,所以我决定DownloadStringAsync改用(所有这些都在使用创建的另一个线程中BackgroundWorker)。而且由于我不想通过在调用后退出循环和函数来重写我的整个代码DownloadStringAsync,所以我在调用它之后立即创建了一个 while 循环,它只检查一个变量,当事件处理程序bool Stop时我变为 trueDownloadStringCompleted被调用或当用户请求取消操作时。

现在,奇怪的是它在调试版本上运行良好;但是在第一个版本中,程序在 while 循环中冻结,就像它是主线程一样。

0 投票
12 回答
94655 浏览

jquery - jQuery - 取消表单提交(使用“return false”?)?

我在尝试取消提交表单时遇到了一些麻烦。我一直在关注本教程(即使我没有制作登录脚本),它似乎对他有用。

这是我的表格:

这是jquery:

我已经在标题中导入了 jQuery,我知道它正在工作。我的第一个想法是它可能已经过时了,但它实际上“只是”一年前。

那么有人看到有什么问题吗?

提前致谢。

编辑:从我所读到的中止提交的最简单和最合适的方法是返回 false?但我似乎无法让它工作。我搜索了论坛,发现了几个有用的主题,但没有一个真正有效。我一定是在搞砸什么。

0 投票
2 回答
2876 浏览

java - 如何判断用户在从 Java servlet 下载期间是否点击了取消?

如何判断用户在从 Java servlet 下载期间是否点击了取消?使用 IE 对我来说似乎发生了什么,输出流 println() 块。使用过的点击取消,但有没有办法让这个或类似的东西超时?

0 投票
1 回答
320 浏览

iphone - iPhone - cancelPerformSelectorWithTarget 不起作用

如果我在 UIView 的子类中这样做:

然后像这样取消它(我已经尝试了两个版本):

“doSomething”方法仍然被调用。我究竟做错了什么?

0 投票
4 回答
1529 浏览

java - Java 线程:关闭标志与捕获异常

在处理取消的线程中,您经常会看到这样的代码

我想知道的是,这是,还是为什么,比这样做更好

我的看法是,在后一种情况下,您根本不需要关心 shutdown var。

0 投票
1 回答
720 浏览

ajax - 如何正确取消永远不会完成的未完成的 Ajax 请求?

这个问题就像另一个问题,只是在 JQuery 的上下文中提出了一个问题,我不使用它。

我页面上的 Ajax 代码每十秒发​​布一次 POST。偶尔——每约 600 个请求——我的客户端代码挂起等待永远不会出现的响应。

代码将超时并重新发出 Ajax 请求,但首先我想清理关于未完成请求的所有内容:我不想留下任何残留状态以便以后搞砸。

取消未完成的请求以使事情得到妥善整理的正确方法是什么?

谢谢!

0 投票
5 回答
9119 浏览

javascript - 如何使用javascript取消http请求

我有一个页面,在该页面上附加了一个事件处理程序onclick。当事件触发时,它将文本框的内容传递给GET请求。由于url 不在同一个域中,所以我创建了一个脚本标记并将 url 附加到它的源,如下所示

现在,如果该事件被触发并且不止一次我想取消所有先前的GET请求(因为他们仍然可能正在接收响应)并GET使用最新文本发出请求。但为此我需要取消以前的请求。我试过了

但这在Firefox(我正在使用Firefox 5)中不起作用,尽管这适用于Google Chrome。有谁知道这些请求是否可以在 Firefox 中取消,如果可以,那么如何?


更新 正如 Alfred 所建议的,我曾经window.stop取消一个请求,但没有取消一个请求,而是挂断了它。这意味着当我查看萤火虫时,它看起来正在发出请求,但没有响应。

0 投票
2 回答
2271 浏览

winapi - 具有重叠 I/O 的 TCP 连接

是否可以使用重叠 I/O 发起 TCP 连接请求,并在 Windows 中连接完成之前取消它?我需要至少支持 Windows XP SP2。