Angular 如何在RXJS中迭代管道内的列表
我有一个变量,它是一个列表Angular 如何在RXJS中迭代管道内的列表,angular,rxjs,angular8,rxjs6,flatmap,Angular,Rxjs,Angular8,Rxjs6,Flatmap,我有一个变量,它是一个列表 this.formListModel=[studentData1、studentData2、studentData3] 现在我必须迭代上面列表中的每个学生数据,并需要传入一个方法,该方法将通过API将这些数据发送到后端 下面是小代码 1. this.odataNotificationService.cancelNotification(this.model) 2. .pipe( 3. tap(() =>
this.formListModel=[studentData1、studentData2、studentData3]
现在我必须迭代上面列表中的每个学生数据,并需要传入一个方法,该方法将通过API将这些数据发送到后端 下面是小代码
1. this.odataNotificationService.cancelNotification(this.model)
2. .pipe(
3. tap(() => {
4. someFunctionality..
5. someFunctionality..
6. }),
7. flatMap(() => this.someFunctionWhichReturnsObservable()),
8. flatMap(() => this.someSecondFunctionWhichReturnsObservable()),
9. flatMap(() => this.formListModel.map(()=>{
return this.thirdFunctionWhichReturnsObservable(form.identifier)
}))
现在我在第9行和第10行遇到了一个问题这里我有一个列表,它存储在一个变量this.formListModel中,在这里我需要迭代数据并发送 下一个函数
this.third函数,该函数返回可维护(表单)
我在flatMap中使用了一个地图,它永远不会工作。
因此,我正在寻找一种可以在管道内部迭代的解决方案,我会这样做:
9.) flatMap(() => combineLatest(...this.formListModel.map(form => this.thirdFunctionWhichReturnsObservable(form.identifier))),
您可能需要将
flatMap
切换到switchMap
,我不确定这一个。您还可以使用forkJoin
而不是combinelateest
。这是你的实验。如果您需要按顺序发送请求,我不确定如何发送。我会这样做:
9.) flatMap(() => combineLatest(...this.formListModel.map(form => this.thirdFunctionWhichReturnsObservable(form.identifier))),
您可能需要将
flatMap
切换到switchMap
,我不确定这一个。您还可以使用forkJoin
而不是combinelateest
。这是你的实验。如果您需要按顺序发送请求,我不知道该怎么做。此解决方案使用from
creational操作符为此.formListModel
中的每个元素发出一个可观察的值。在mergeMap
内部订阅了可观察的对象,并返回了此.third函数的可观察结果,其中返回了可观察的。
当来自(this.formListModel)的外部流完成toArray()
时,操作符绑定来自此.thirdFunction的所有结果,该.thirdFunction可恢复
,并发出一个数组
您可能需要根据自己的需要调整此解决方案。我希望有帮助。
将第9行替换为:
switchMap(() => from(this.formListModel)),
concatMap(identifier => this.thirdFunctionWhichReturnsObservable(form[identifier])),
toArray()
我使用了mergeMap
,假设this.third函数的顺序、结果都会在matters中返回,而该函数返回的是可维护的。如果没有,则使用mergeMap
您可以在此处阅读rxjs展平操作符:
此解决方案使用来自
creational运算符的
为该.formListModel
中的每个元素发出一个可观察的值。在mergeMap
内部订阅了可观察的对象,并返回了此.third函数的可观察结果,其中返回了可观察的。
当来自(this.formListModel)的外部流完成toArray()
时,操作符绑定来自此.thirdFunction的所有结果,该.thirdFunction可恢复
,并发出一个数组
您可能需要根据自己的需要调整此解决方案。我希望有帮助。
将第9行替换为:
switchMap(() => from(this.formListModel)),
concatMap(identifier => this.thirdFunctionWhichReturnsObservable(form[identifier])),
toArray()
我使用了mergeMap
,假设this.third函数的顺序、结果都会在matters中返回,而该函数返回的是可维护的。如果没有,则使用mergeMap
您可以在此处阅读rxjs展平操作符: