【发布时间】:2020-06-18 10:45:29
【问题描述】:
我有 50 个科目,我发送 50 个并行调用,每个科目返回 1 个或多个学生数据
例如:如果我发送一个 subjectId,this.subjectService.getStudentsData(subjectId)
它返回学生数据:
[
{StudentId:1,
"FirstName":'firstName',
"ListOfSubjects":[{Subjectid:1,SubjectName:'Maths', .....somedata:[{1:a,2:b...}, {3:y,2:x...}]}},
{
StudentId:2,
FirstName:secondName,
.
.
ListOfSubjects:[
{Subjectid:1,SubjectName:'Maths', .....somedata:[{c:1,d:2...}, {a:y,b:x...}]}}]
现在我需要在通过用户数据获取用户时进行绑定,但完成所有服务调用需要 15 分钟
我用的是
const requests: any = subjectIds.map(id => {
const t: any = {...data};
t.SubjectId = [id];
return this.studentService.getStudentsData(t);
});
【问题讨论】:
-
如果您只使用地图,请求将在后续发送。如果您想并行发送它们,请使用 forkJoin 方法:learnrxjs.io/learn-rxjs/operators/combination/forkjoin
-
我需要绑定到 UI,因为我得到每个请求的响应并将下一个响应添加到原始响应等等,所以我认为 forkjoin 在这里没有帮助
标签: angular asynchronous