【发布时间】:2019-06-02 08:57:03
【问题描述】:
我有一个向用户显示问题的应用。 问题的草稿从 SharePoint 列表加载。每个草稿都包含一个键,用于从另一个 SharePoint 列表加载对问题的正确响应。以下是我目前的实现方式:
interface QuestionDraft {
title: string;
responseKey: string;
}
interface Question {
title: string;
responses: string[];
}
const drafts: QuestionDraft[] = [];
const questions: Question[] = [];
// stub
private getDrafts(): Observable<QuestionDraft> {
return from(drafts);
}
// stub
private getResponses(key: string): Observable<string> {
return of(key, key, key);
}
main(): void {
getDrafts().subscribe(
data => {
const res: string[] = [];
getResponses(data.responseKey).subscribe(
d => res.push(d),
error => console.error(error),
() => questions.push({
title: data.title,
responses: res
})
);
}, error => console.error(error),
() => console.log(questions)
);
}
这个解决方案工作正常,但我认为main() 中的代码看起来很乱。有没有更简单的方法来做同样的事情,例如使用mergeMap 或类似的东西?
【问题讨论】:
标签: javascript typescript rxjs observable