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