【发布时间】:2020-11-20 06:42:00
【问题描述】:
我有一组要按顺序执行的可观察对象,即等待一个请求在下一个请求之前完成。
如果我使用 forkJoin,请求是并行执行的,我可以像这样使用它,
forkjoin(arrayOfObservables)
使用 concatMap 和 observables 数组的等效方法是什么。我想要类似的东西
concatMap(arrayOfObservables)
例子:
booleanQuestion$ = (question) => {
return this.assessmentService
.createBooleanQuestion(this.testId, question)
.pipe(
tap(
(res) => {
this.questionsCreated += 1;
this.progress =
(this.questionsCreated / this.questions.length) * 100;
},
(err) => console.log(err)
)
);
};
pushBooleanQuestions(): Array<Observable<any>> {
const booleanQuestions$ = [];
this.booleanQuestions.forEach((questionObj) => {
questionObj.order = this.elements.findIndex(
(element) => element.component === questionObj.component
);
delete questionObj.component;
booleanQuestions$.push(this.booleanQuestion$(questionObj));
});
return booleanQuestions$;
}
let allQuestions = this.pushBooleanQuestions()
.concat(this.pushSubjectiveQuestions())
.concat(this.pushObjectiveQuestions());
this.questionCreation$ = forkJoin(allQuestions);
我想订阅 this.questionCreation$。它应该使用 concatMap 而不是 forkJoin。
【问题讨论】: