首页 > 解决方案 > angular 6 如何同时处理不同的调用?

问题描述

Angular 6 如何处理同时调用多个调用?假设我在同一页面上显示两个数字,由对 Web API 的两次不同调用(订阅 Observables)返回。

我来自该页面的一个呼叫被延迟,我如何确定这是否被另一个呼叫阻止(我认为很可能是原因),可以防止这种情况以及如何防止?

当两个或多个调用同时发生时,这是预期的行为吗,角度不会并行处理它们?(我不使用 forkJoin,我对两个不同的 Observable 有两个单独的订阅)

如果其中一个结果被延迟(服务需要很长时间才能响应),那么第二个结果是否也会被延迟?

标签: angularasynchronousconcurrencyangular6

解决方案


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));

有很多运算符,所以我不会全部介绍,但是这个页面有它们,所以请随时查看。


推荐阅读