【发布时间】:2021-09-02 06:16:56
【问题描述】:
我有一个“N”个 ID 数组,我想为每个项目消耗 2 个服务,并用计时器将所有服务包装在一个 forkjoin 中,因为我不想同时发送 1000 个请求,我希望每个项目在 10 秒内处理完毕,想法是在订阅时知道哪些 id 已处理,哪些未处理。
var arraytoprocess=[...this.selection.selected]; //array of ids
var arraytoprocessObs$=[];
for (let index = 0; index < arraytoprocess.length; index++)
{
const obs1$=this._api.service1(+arraytoprocess[index].id);
const obs2$=this._api.service2(+arraytoprocess[index].id);
const obs$=forkJoin([obs1$,obs2$])
arraytoprocessObs$.push(obs$)
}
//call each item of the arraytoprocessObs$ per 10 seconds
magiccodewithpipes().subcribe()
【问题讨论】:
-
为什么不在任何时候都像 5 个并行调用这样的池?感觉比在 2 个调用之间选择任意 10 秒等待更优化。
-
我不并行发送 5 个调用,因为我知道 api 在某些情况下可能会被巨大的消耗阻塞,因为在某些情况下为进程选择的 id 可以达到 10 000 个 id *2,而其他修复并发性能