我想确保对给定的API调用进行限制,以便在给定的时间间隔内,仅触发一个请求,而其他受限制的请求则等待并接收主动触发的请求的结果>
示例
generateReportA(...).then(console.log) // should log result of C
generateReportB(...).then(console.log) // should log result of C
generateReportC(...).then(console.log) // should log result
如果我们随后运行以下语句
generateReportC
彼此之后,我只想触发与generateReportA
相关的请求,我希望generateReportB
和generateReportC
都接收并处理{{1} }。
最后,generateReport
应该被调用一次,saveReportSomewhere
应该被调用3次,每次都来自generateReportC
这可能吗?
答案 0 :(得分:0)
这将触发C
请求获取结果并保存,然后使用A
的结果同时触发B
和C
,并在每次发射后立即保存结果
generateReportC.pipe(
tap(cResult => saveReportSomewhere(cResult)),
mergeMap(cResult => merge(generateReportA(cResult), generateReportB(cResult))),
tap(result => saveReportSomewhere(result))
).subscribe();