具有多个独立呼叫者的油门服务

时间:2018-06-21 13:39:54

标签: rxjs rxjs5

我想确保对给定的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相关的请求,我希望generateReportBgenerateReportC都接收并处理{{1} }。

最后,generateReport应该被调用一次,saveReportSomewhere应该被调用3次,每次都来自generateReportC

这可能吗?

1 个答案:

答案 0 :(得分:0)

这将触发C请求获取结果并保存,然后使用A的结果同时触发BC,并在每次发射后立即保存结果

generateReportC.pipe(
    tap(cResult => saveReportSomewhere(cResult)),
    mergeMap(cResult => merge(generateReportA(cResult), generateReportB(cResult))),
    tap(result => saveReportSomewhere(result))
).subscribe();