angular - angular 6 如何同时处理不同的调用?
问题描述
Angular 6 如何处理同时调用多个调用?假设我在同一页面上显示两个数字,由对 Web API 的两次不同调用(订阅 Observables)返回。
我来自该页面的一个呼叫被延迟,我如何确定这是否被另一个呼叫阻止(我认为很可能是原因),可以防止这种情况以及如何防止?
当两个或多个调用同时发生时,这是预期的行为吗,角度不会并行处理它们?(我不使用 forkJoin,我对两个不同的 Observable 有两个单独的订阅)
如果其中一个结果被延迟(服务需要很长时间才能响应),那么第二个结果是否也会被延迟?
解决方案
Angular 不处理多个调用,你可以。
HTTP 调用是通过提供 Observables 的库 ReactiveXJS 进行的。
要确定加载策略,您将使用运算符。
例如,最常见的是
合并:将显示值作为数组,无论顺序如何
callOne().pipe(merge(value => callTwo()).subscribe(value => console.log(value));
concat:将等待第一个完成
concat(callOne(), callTwo()).subscribe(value => console.log(value));
mergeMap : 每次第一次调用收到值时都会订阅第二次调用
callOne().pipe(mergeMap(valueOne => callTwo())).subscribe(valueTwo => console.log(valueTwo));
switchMap:每次第一次调用收到一个值时都会订阅第二次调用,但会取消之前对第二次调用的订阅
callOne().pipe(switchMap(valueOne => callTwo())).subscribe(valueTwo => console.log(valueTwo));
有很多运算符,所以我不会全部介绍,但是这个页面有它们,所以请随时查看。
推荐阅读
- r - 从 r 中的“效果”包中省略序数回归图中的截距线
- c# - 在子属性中包含具有通用类型的属性
- excel - 获取大型工作表的列中的所有筛选条件
- c++ - 包含 iostream 的 g++ 在几乎相同的系统上会出现编译错误,为什么?
- api - 向第三方 API 发送 POST 请求
- c# - 尝试抓取 JSP 页面时出现 Selenium 问题:“未附加元素”
- email - 如何使用事件门票模式测试电子邮件
- javascript - JavaScript - 在移动设备上禁用页面刷新
- c++ - 如何从向量中具有数组位置的数组(在内存中)中最佳读取?
- spring-boot - Spring Boot Rapid7 日志记录在 kubernetes POD 中不起作用