首页 > 解决方案 > 将 Autorest 与 typescript 一起使用时,如何取消正在进行的客户端请求?

问题描述

使用带有打字稿的 Autorest 时,有没有办法中止正在进行的客户端请求?

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

标签: typescriptautorest

解决方案


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

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

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

...

然后在OperationArguments.options.abortSignal调用的时候传入

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

然后调用abort然后 abortController :

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

...并且返回的承诺sendOperationRequest应以abortError.

请参阅提供的 javascript 示例:https ://mdn.github.io/dom-examples/abort-api/

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


推荐阅读