问题标签 [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 投票
1 回答
973 浏览

c# - 带有 CancellationToke 的 AddScoped 依赖项

我有一个针对每个 REST API 请求的 .NET 核心依赖项。它是Startup.ConfigureServices通过调用添加的AddScoped

我想为此添加取消支持。如果我将 a 添加CancellationToken cancellationToken到任何控制器操作的参数中,我可以获得一个令牌,如果客户端请求是,则该令牌会被取消。然后我可以将该令牌传递给我的依赖项上的所有方法。

但是,依赖项的范围仅限于请求,因此通过操作将令牌向下传递给方法感觉没有必要 - 我可以CancellationToken以某种方式将其添加到范围依赖项中吗?

0 投票
1 回答
52 浏览

c# - 取消并行进程

我有一个 MainProcess.cs 和 ChildProcess.cs。Mainprocess 用于收集所有需要的信息并将所有数据提交到并行 foreach 循环。子进程将调用单独的 API。

主进程.cs

ChildProcess.cs

数据保存如下表。

图1

在此处输入图像描述

有 MainProcess 类,它有一个并行运行任务的方法。有一个 ChildProcess 类,它有“ProcessMethod”。在“ProcessMethod”中,我调用单独的 API 来做一些工作。上面提到的代码和程序是 100% 正确工作的。

但我的问题是,有时我需要取消处理。让我们使用下面的“图 2”来使这更容易理解。

图 2

在此处输入图像描述

根据上图,整个过程大约在 10 秒内完成。在第 4 秒,我需要取消处理。(呼叫 1 和呼叫 5 已经返回响应)呼叫 2、呼叫 3、呼叫 4 都发送了请求,但仍然没有收到响应。

我需要做的是,在给定时间取消所有进程。就像,我在浏览器中输入了一个 Url 并回车。在出现网页之前,我关闭了浏览器。所以我不在乎回复。

我尝试使用取消令牌来做到这一点。但是我坚持的地方是,我无法取消对特定资源 ID 的 api 调用。

然后我修改了 ChildProcess.cs 的代码。

添加了实例变量

然后改变

我知道,它应该必须使用下面的代码来取消过程。

但问题是如何从不同的函数中取消特定的resourceId 的进程?(取消特定resourceId的进程,因为ProcessMethod可以并发调用。如果是处理第二个resourceId的进程,应该不会影响到第二个进程。第一个resourceId批次应该关闭/取消)

有哪位专家可以帮助我解决这个问题吗?

0 投票
1 回答
137 浏览

javascript - 尽管有适当的 Access-Control-Allow-* 标头,但 CORS ajax 调用失败

我正在从第三方托管的脚本到我的端点执行 ajax 调用。

在 Chrome 中,预检调用如下所示:

我将端点的服务器配置为允许每个标头、方法和来源,在响应标头中可见。尽管如此,Chrome 还是不断取消后续的 POST 请求。

我错过了什么?

编辑:如果我从服务器响应中删除访问控制允许标头,Chrome 会在控制台中写入正确的错误消息“请求标头字段内容类型不允许访问控制允许标头在预检响应中。” 并且 POST 请求在网络选项卡中被标记为(失败)。添加 access-control-allow-headers :" * "时,没有错误信息,POST请求被标记为(canceled)

谢谢

0 投票
1 回答
374 浏览

vue.js - 在 then() 而不是 catch() 中捕获 axios 取消

我制作了一个多上传文件表单。

用户取消后,一旦使用 cancel() 取消了相应的 axios 调用,我就会有一种奇怪的行为。我的 axios 调用被捕获在 then() 中,而它应该被捕获在 catch() 中。then() 内部的响应返回undefined.

我很难确定我是否在前端部分做错了什么,我认为我的电话可能缺少一些标题或者它可能在后端部分?

服务本身定义如下

在文件对象执行时调用取消

0 投票
1 回答
361 浏览

reactjs - 未处理的拒绝 (AbortError):操作已中止

编辑:仅在 Firefox 中反应应用程序崩溃。当我使用 chrome 时,反应应用程序不会崩溃。如何处理Firefox中的崩溃?

我想在卸载组件时取消 http 请求。我正在使用 fetch() 和 AbortController。

我遵循本指南

但是当组件卸载时,反应应用程序崩溃。

在此处输入图像描述

这是我的代码:

0 投票
0 回答
27 浏览

iis - 如何将 API 取消令牌与 IIS 重写和多个网站一起使用?

我的 IIS 设置:

我的 IIS 中有多个带有重写规则的网站,这些规则将 API 请求从默认网站传输到其他网站,这意味着 API 请求会到达默认网站,然后被重写到 InternalSite1,然后再到 InternalSite2。

问题:

当我尝试关闭一个长时间运行的 API 请求并访问默认网站并转到另一个内部网站时,我无法使用带有 ClientDisconnectedToken 的 CancellationToken 来关闭连接。连接在 API 端点、内部网站上保持打开状态,但在默认网站上关闭。我知道这一点是因为我在 API 端点上运行了一个调试器,并且我使用 IIS 工作进程模块来查看每个网站的应用程序池上的并发连接。

为什么我认为问题在于重写或拥有多个网站:

当我直接调用其中一个内部网站时,这意味着我绕过了重写规则和使用多个网站,取消工作。我在我的 API 客户端 Postman 中点击取消,在 API 调试器会话中我可以看到 API 请求停止。

有谁知道如何关闭那些内部网站连接、使用重写规则转发取消请求或其他方法?

0 投票
0 回答
47 浏览

c# - 为什么这个程序停止运行?等待异常处理和取消问题

我的任务是编写异步控制台应用程序,并面临“等待”异常处理的问题。任务是我需要异步执行一些特定的计算,并且能够取消该计算(在它运行时)。

所以,我有这样的代码:

以及异步方法的代码:

相应的消息负责打印结果(即打印任务是否被取消、是否出现异常、任务是否成功完成等)。

所以,当我取消任务,或者只是输入无效值(这会导致 ArgumentException 然后是 AggregateException),我的程序(在某些运行中)只是退出,但是当我切换到task.Wait()try..catch 构造并删除“async”关键字时方法签名,它在所有运行中都能正常工作。 我想不通,是CLR线程池的一些调试功能,还是我写错了?欣赏任何链接或文献。

0 投票
1 回答
23 浏览

javascript - 如何知道对象的类型?Javascript

我的控制台上有那个打印件。

在此处输入图像描述

在此处输入图像描述

当我的错误函数被调用时,我打印这个

当我这样做时,error.cancel,它是未定义的。我可以对这种类型进行一些验证吗?如果取消来,我会做类似的事情

如何检查“取消”?

0 投票
0 回答
9 浏览

request - 取消的请求和服务器端工作负载

我在我开发的网站中找到了一个锚点,可以在提供响应之前多次单击该锚点。这将导致很多canelled-request

在此处输入图像描述

我想了解取消是否意味着通知服务器并因此停止处理请求(在我的场景中处理有点昂贵),或者如果大量请求会堆积起来,可能会减慢 Web 服务器的速度。

如果请求会堆积,我想知道哪种方法是防止双击锚元素的最佳方法,这样会触发许多请求。