Angular-RxJS- 在长 API 调用中间隐藏微调器并继续 API 调用

Posted

技术标签:

【中文标题】Angular-RxJS- 在长 API 调用中间隐藏微调器并继续 API 调用【英文标题】:Angular-RxJS- Hide spinner in the middle of long API call and continue API call 【发布时间】:2022-01-20 15:17:16 【问题描述】:

API 调用的响应时间在 2 到 30 秒之间变化。 初始化 API 调用后,如果 API 调用需要超过 五秒,在第六秒的时候,我必须执行一些 动作(隐藏微调器),并且调用必须继续,直到它 完成。

RxJS 运算符的最佳组合是什么?

【问题讨论】:

我会看看takeUntiltimer Merge with timer,见第一个例子。 【参考方案1】:

使用Rx延迟应该能够在一定时间延迟后触发动作

import  of  from 'rxjs';
import  delay  from 'rxjs/operators';

doSomething(): Observable<boolean> 
 //place your logic here 
   return of(true);
 //you can specify what type of observable to use number, string etc..

const $delayed 
  = doSomething
   .pipe(delay(6000))
   .subscribe(e => console.log(e));

【讨论】:

我们在哪里可以在第 6 秒控制隐藏微调器? API 调用必须按原样执行,没有任何延迟或中断.. 1- 您设置一个 css 类来控制微调器的可见性,然后在 doSomething 函数的 js 代码中将隐藏 css 类设置为微调器元素 以上行不通,为什么因为最初的 6 秒延迟然后调用 API 不是我想要的。 API 服务和计时器应该并行启动,我应该获得计时器回调控制,并且 API 应该继续运行直到完成。如果可能,请提供示例或可行的解决方案。 6 秒后没有人指示调用 api!该代码只是投影如何在 6 秒后延迟函数调用,将其与逻辑结合的方式完全取决于您,事实上,在您的情况下,您应该在发出 api 调用或使用 Rx 后立即调用此方法合并或加入以同时发出两个呼叫

以上是关于Angular-RxJS- 在长 API 调用中间隐藏微调器并继续 API 调用的主要内容,如果未能解决你的问题,请参考以下文章

在长线程过程中更新 TextView

如何代表流在.Net Core中调用下游API?

关于c#调用java中间件api的几个问题

调用百度地图 API 移动地图时 maker 始终在地图中间 并根据maker 经纬度 返回地址

[系列] go-gin-api 路由中间件 - Jaeger 链路追踪

如何使用 Redux-Saga 和 Hooks 调用 API