我有一系列请求,如:
let array = [req1,req2,req3.....,req(n)]
目前我正在使用forkJoin调用一个订阅者只有在获得所有请求响应后。现在我想修改我的代码,使API调用在批处理,但调用订阅者只有在完成所有批处理响应后,它可能吗?
这些例子
public demoCalls() {
let demoForkJoin
var a = [req1,req2,....,req45]
a.map((data,index)=>{
demoFrokJoin[index] = this.http.post()
})
forkJoin(demoForkJoin)
}
现在,我想批量调用10-10 req,而不是这样。每个10 req将在1000 ms后调用
并且只有在从所有API获得响应后才调用一个订户。(所有45个API)
demoCall().subscribe(res=>{
// this subscribe only once after all calls are completed and got success result
})
1条答案
按热度按时间lb3vh1jj1#
我建议使用一些rxjs操作符的并发值来代替批处理。例如,
mergeMap
提供了这个值。完成一个观察对象后,下一个观察对象将成为订阅对象。添加finalize
以完成操作。以下示例具有2个并发请求
请在Stackblitz上查看此操作:https://stackblitz.com/edit/typescript-cmylca?file=index.ts