首页 > 解决方案 > 在再次调用 API 之前,如何在 Angular 中等待成功的 API 响应?

问题描述

不好意思问了一个草率的问题,真心希望能在这里得到一些帮助。

我将 Angular 6 用于前端,将 .NET Core API 用于后端逻辑。API 调用一些外部 API。有一种情况,我需要定期调用 API 来检查事件的状态。我每 3 秒打一个电话,可能的响应是“等待”、“确定”、“取消”、“错误”等。在某些情况下,第一个调用在执行下一个调用之前没有响应,因此我不必要地对 API 进行了两次调用。

我尝试过使用 .pipe(share().subscribe()),它解决了延迟响应的问题,在客户端执行了不需要的操作,但其他调用仍在执行。

角度:

this.subscription = interval(3000).subscribe((value) => 
    this.someService.CheckCode(this.Code).pipe(share()).subscribe(
        result => { 

          /* Logic goes here... */

          this.subscription.unsubscribe();
        }
        ));

.NET 核心 API

        [HttpGet]
        public IActionResult CheckCode([FromQuery]string Code)
        {
            var result = GetStatus(Code); //This method performs a GetAsync method
                if (string.IsNullOrEmpty(result))
                    return BadRequest();
                return Ok(new { Token = result });
            }
            catch (Exception x)
            {
                return BadRequest();
            }
        }

我想链接我的调用,这样他们就不会在收到响应之前访问 API。仅当我收到“等待”响应或 API 响应时间过长时,才应发出以下请求。

任何帮助将不胜感激。

标签: c#angularrestasp.net-core

解决方案


我认为,这应该由具有适当标头响应代码的 API 处理。如果 API 执行未完成,则响应代码应为 202,并在 3 秒后添加带有回调 URL 的重试。


推荐阅读