RxJS forkJoin链接请求?

RxJS forkJoin链接请求?,rxjs,Rxjs,我有 所以我并行提交测试,等待所有提交完成。我想在某种程度上对此进行改进,即提交测试,并使用响应(提交)中的数据更新数据库(另一个调用) 如何最好地实现这个forkJoin(submitTest->在数据库中记录提交)?我想我只是不知道哪个RxJS操作符是理想的 解决finito后执行此操作是不可行的,我需要在提交单个测试后尽快将记录保存在数据库中。我假设submitsetjob是一个远程http调用,返回一个可观察的。 如果这是真的,我会这样做 const jobsToRun = this.c

我有

所以我并行提交测试,等待所有提交完成。我想在某种程度上对此进行改进,即提交测试,并使用响应(提交)中的数据更新数据库(另一个调用)

如何最好地实现这个forkJoin(submitTest->在数据库中记录提交)?我想我只是不知道哪个RxJS操作符是理想的


解决
finito
后执行此操作是不可行的,我需要在提交单个测试后尽快将记录保存在数据库中。

我假设
submitsetjob
是一个远程http调用,返回一个可观察的。 如果这是真的,我会这样做

const jobsToRun = this.config.data.tests.map(test => test.location);
const jobsSubmits: any[] = jobsToRun
    .map(job => this.jobsService.submitTestJob(job).pipe(first())); // HERE

const finito = await forkJoin(jobsSubmits).toPromise();

您可以阅读更多关于http in的典型rxjs模式的信息。

我假设
submittTjob
是一个远程http调用,返回一个可观察的。 如果这是真的,我会这样做

const jobsToRun = this.config.data.tests.map(test => test.location);
const jobsSubmits: any[] = jobsToRun
    .map(job => this.jobsService.submitTestJob(job).pipe(first())); // HERE

const finito = await forkJoin(jobsSubmits).toPromise();

您可以在中阅读有关http的典型rxjs模式的更多信息。

这应该是一个简单的问题,将第一次调用的结果映射到第二次调用

大概是这样的:

const jobsSubmits=this.config.data.tests
.map(test=>test.location)
.map(job=>this.jobservice.submitsetJob(job.pipe(
第一个(),
switchMap(已提交=>this.jobservice.makeRecordABout(已提交))
));
const finito=等待forkJoin(作业提交).toPromise();

将第一次呼叫的结果映射到第二次呼叫应该是一个简单的问题

大概是这样的:

const jobsSubmits=this.config.data.tests
.map(test=>test.location)
.map(job=>this.jobservice.submitsetJob(job.pipe(
第一个(),
switchMap(已提交=>this.jobservice.makeRecordABout(已提交))
));
const finito=等待forkJoin(作业提交).toPromise();
switchMap与concatMap相比有哪些好处(如果有的话)?我已经读过关于运算符的内容,但在我的特殊情况下没有看到太大的区别,因为我的submit发出2个值(相同,因为设计中的缺陷不在我的管辖范围内,所以我使用first()始终有1个值),我等待与否无关紧要是的,
first()
获取第一个值并完成流。在这些情况下,
mergeMap
concatMap
switchMap
都会产生相同的输出
switchMap
是这三个应用程序中唯一一个一次不管理多个订阅的应用程序,因此它倾向于在这种情况下使用,因为它“感觉”最合适。实际上,这并不重要。switchMap与concatMap相比有什么好处(如果有的话)?我已经读过关于运算符的内容,但在我的特殊情况下没有看到太大的区别,因为我的submit发出2个值(相同,因为设计中的缺陷不在我的管辖范围内,所以我使用first()始终有1个值),我等待与否无关紧要是的,
first()
获取第一个值并完成流。在这些情况下,
mergeMap
concatMap
switchMap
都会产生相同的输出
switchMap
是这三个应用程序中唯一一个一次不管理多个订阅的应用程序,因此它倾向于在这种情况下使用,因为它“感觉”最合适。事实上,这并不重要。