c# - 在再次调用 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 响应时间过长时,才应发出以下请求。
任何帮助将不胜感激。
解决方案
我认为,这应该由具有适当标头响应代码的 API 处理。如果 API 执行未完成,则响应代码应为 202,并在 3 秒后添加带有回调 URL 的重试。
推荐阅读
- java - 如何使用java删除或删除Excel工作表中的空行
- r - 根据数据框计算每个国家/地区的平均值
- php - Woocommerce 围绕税率
- powershell - 如何为脚本块提供选项?
- docker-compose - 仅在未启动时启动depends_on docker
- android - 如何在颤动中使用火焰制作/绘制点?
- android - 为了在 Play 商店中上传 android 应用程序,我必须对 ip 地址进行哪些更改
- android - 如何使用通配符 adb 拉文件夹
- css - 打开工厂列表时删除十字图标
- sql-server - 计数 - SQL Server Management Studio 2017