【发布时间】:2020-02-18 21:17:54
【问题描述】:
我有一个 DotNet Core 2.2 api 端点,它接受 CancellationToken 并在处理时定期检查它。当我从 Angular 7 前端调用该端点,然后取消请求(通过取消订阅)时,取消令牌不会反映取消状态。为了正确取消令牌,我是否缺少步骤?或者这完全不是现在请求取消过程有效?
请注意,我可以看到初始请求触发、api 工作以及请求取消(通过 Chrome devtools 网络选项卡)。
Angular 7
private sub: Subscription;
doWork(): void {
// calls to http client, sending a POST
this.sub = this.service.doWork([1,2,3,4]).subscribe();
}
cancelWork(): void {
if(this.sub && !this.sub.closed) {
this.sub.unsubscribe();
}
}
API
[HttpPost("DoWork")]
public async Task<ActionResult<HttpResponseMessage>> DoWork([FromBody] List<int> ids, CancellationToken cancellationToken)
{
foreach(var id in ids)
{
// ---> cancellationToken.IsCancellationRequested is always false <-------
cancellationToken.ThrowIfCancellationRequested();
await doLongRunningTask(id);
}
}
【问题讨论】:
标签: angular .net-core cancellation-token