使用 Autorest 和 typescript 时如何取消正在进行的客户端请求?

Posted

技术标签:

【中文标题】使用 Autorest 和 typescript 时如何取消正在进行的客户端请求?【英文标题】:How do you cancel ongoing client request when using Autorest with typescript? 【发布时间】:2021-12-18 08:40:29 【问题描述】:

在使用 Autorest 和 typescript 时,有没有办法中止正在进行的客户端请求?

我注意到ServiceClient 对象可以指定RequestPrepareOptions,但我不清楚如何将请求选项传递给传出请求方法。或者也许还有其他方法可以取消?

【问题讨论】:

也许您可以添加一些代码来举例说明您想要做什么,以及您已经尝试过什么。 【参考方案1】:

看来你可以使用浏览器abortController mechanism。您必须创建一个中止信号:

AbortController 接口表示一个控制器对象,允许您在需要时中止一个或多个 Web 请求。

var controller = new AbortController();
var signal = controller.signal;

...

然后调用时传入OperationArguments.options.abortSignal

function sendOperationRequest<T>(operationArguments: OperationArguments, operationSpec: OperationSpec)

然后调用 aborton 然后 abortController :

abortBtn.addEventListener('click', function() 
  controller.abort();
  console.log('Download aborted');
);

...sendOperationRequest 返回的承诺将被 abortError 拒绝。

查看提供的 javascript 示例:https://mdn.github.io/dom-examples/abort-api/

注意:该功能标记为实验性,因此可能并非所有浏览器都支持。

【讨论】:

以上是关于使用 Autorest 和 typescript 时如何取消正在进行的客户端请求?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 JWT 在 Autorest 生成的 SDK 中工作? (ASP.NET 核心 2.0)

如何降级 Autorest 扩展 - 特别是 C# 扩展?

Autorest 生成需要 beta 包的 Client Sdk

我可以在 blazor 中使用 Autorest 客户端吗

注意:从配置中选择的 AutoRest 核心版本:~2.0.4413 当我安装了 3.06187

从 Azure autorest 中生成排除方法