Angular 7 отменен HTTP-запрос, не отраженный в Core API - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть конечная точка API Do tNet Core 2.2, которая принимает CancellationToken и периодически проверяет его во время обработки. Когда я вызываю эту конечную точку из моего Angular 7 внешнего интерфейса, а затем отменяю запрос (отписываясь), токен отмены не отражает отмененный статус. Есть ли шаг, который я пропускаю, чтобы токен был отменен правильно? Или это совсем не сейчас, процесс отмены запроса работает?

Обратите внимание, что я вижу начальный запуск запроса, API, выполняющий работу, и отмену запроса (через вкладку Chrome devtools Network).

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);
    }
}

1 Ответ

0 голосов
/ 19 февраля 2020

cancellationToken.ThrowIfCancellationRequested(); выдает, если запрос был отменен к моменту оценки этой строки, поэтому он просто не будет работать в вашем случае. обычно некоторые утилиты asyn c предоставляют API для передачи того токена, который они будут использовать внутри

...