>source

Http 메소드에서 진행 상황에 따라 동적으로 여러 값을 반환하려면 어떻게 해야 합니까?

방법을 시도했습니다:

public async IAsyncEnumerable<IActionResult> GenerateImage(){
CancellationToken cancellationToken= _httpContextAccessor.HttpContext.RequestAborted;
await Task.Factory.StartNew(()=>  {
      for(int i=0; i< 10; i++)
      {
         Ok(new {id= i });
         Thread.Sleep(1000);
         if (cancellationToken.IsCancellationRequested)
         {
              Ok("Cancel requested");
              break;
         }
       }
     }, cancellationToken);
            yield return Ok();
}

질문: 진행 상황을 추적하기 위해 Http 메서드가 하나씩 'i'를 반환하도록 할 수 있습니까?

취소 토큰 작동(각도 쪽) -취소 버튼 클릭 시=> this.subscription.unsubscribe();

추가 정보: .NET 5에 구축된 프런트 엔드 및 Web API에 Angular 11 프로젝트를 사용하고 있습니다.

IActionResult인 클래스 목록을 반환하는 컨트롤러가 있습니다. deserialize 메서드는 응답을 받아 클래스 개체 IActionResult로 변환하는 데 사용됩니다. 클래스 구조에 ID를 추가한 다음 응답을 보내기 전에 서버 code에서 ID를 쓰도록 할 수 있습니다.

jdweng2022-01-24 10:49:57

당신은 할 수 없습니다. 그것에 대해 생각해보십시오. http를 통해 요청한 다음 API에서 http 응답을 수신하고 통신이 닫힙니다. 일련의 레code를 얻으려는 경우 결과에 페이지를 매기고 결과의 다음 페이지에 대해 또 다른 요청을 보낼 수 있지만 정확히 원하는 것은 아닙니다.

J.Salas2022-01-24 10:56:38

(이것은 내 방법의 더미 예제입니다.) 실제로 이 끝점이 호출될 때 백그라운드에서 실행되는 이미지 생성 프로세스(100개 이미지라고 가정)를 시작하고 각 이미지가 생성된 후 프로세스를 다시 보고하고 싶습니다. 나는 그것을 달성할 수 있습니까, 없습니까? yield return을 사용하여 수행 할 수 있다고 생각했습니다.

JmukhadzeT2022-01-24 11:00:45
  • 이전 A 또는 B 중 하나가 rxjs의 유효한 응답을 받았을 때 C를 수행하는 방법은 무엇입니까?
  • 다음 팬더를 가져오려고 할 때 Python 콘솔에서 계속 오류가 발생합니다.