Rxjs 具有多个独立呼叫者的节流服务

Rxjs 具有多个独立呼叫者的节流服务,rxjs,rxjs5,Rxjs,Rxjs5,我希望确保对给定的API调用进行限制,以便在给定的时间间隔内,只触发一个请求,其他被限制的请求等待并接收主动触发的请求的结果 示例 const generateReport = (args) => client.get(...) const generateReportA = (argsForA) => generateReport(argsForA).then(saveReportSomewhere) const generateReportB = (argsForB)

我希望确保对给定的API调用进行限制,以便在给定的时间间隔内,只触发一个请求,其他被限制的请求等待并接收主动触发的请求的结果

示例

const generateReport = (args) => client.get(...)

const generateReportA = (argsForA) =>
    generateReport(argsForA).then(saveReportSomewhere)

const generateReportB = (argsForB) =>
    generateReport(argsForB).then(saveReportSomewhere)

const generateReportC = (argsForC) =>
    generateReport(argsForC).then(saveReportSomewhere)
如果我们运行下面的语句

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
的结果

最后,
generateReport
应该被调用一次,
saveReportSomewhere
应该被调用三次,每次调用的结果都来自
generateReport c


这可能吗?

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

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