Angular 如何在javascript中与可观察的内部循环合并?
在angular项目中,我有一个进程列表,我需要得到每个进程的链接进程,并将它们合并到一个数组中。唯一能得到链接进程列表的方法是使用可观察的方法。我应该使用哪些rxjs方法,以及如何获得流程的链接列表?我是rxjs的新手 我试图将每个结果推送到最终数组,但得到了如下错误Angular 如何在javascript中与可观察的内部循环合并?,angular,rxjs,observable,Angular,Rxjs,Observable,在angular项目中,我有一个进程列表,我需要得到每个进程的链接进程,并将它们合并到一个数组中。唯一能得到链接进程列表的方法是使用可观察的方法。我应该使用哪些rxjs方法,以及如何获得流程的链接列表?我是rxjs的新手 我试图将每个结果推送到最终数组,但得到了如下错误 无法读取未定义的属性“push” let processToProcessLinkList = []; listOfProcesses.forEach(process => { // populate link l
无法读取未定义的属性“push”
let processToProcessLinkList = [];
listOfProcesses.forEach(process => {
// populate link list
this.processEndpoint.processLinkedProcessList(process.id, new DataSourceRequest()).subscribe(result => {
if(result.success) {
result.data.forEach(element => {
this.processToProcessLinkList.push(element);
});
// this.processToProcessLinkList.push(...result.data);
}
}
```
如果我理解正确,您可以从一个数组
进程列表开始。对于数组中的每个元素,必须通过this.processEndpoint.processLinkedProcessList
调用端点。最后,您必须将所有响应收集到数组processToProcessLinkList
如果是这样的话,你可以试着做一些类似的事情
// create an array of Observables representing the requests to the end point, one per element in the array listOfProcesses
const requests = listOfProcesses.map(p => this.processEndpoint.processLinkedProcessList(p.id, new DataSourceRequest()));
// execute all requests in parallel to get an array of responses
forkJoin(requests)
.subscribe(responses => processToProcessLinkList = responses)
注1:错误无法读取未定义的属性“push”
似乎与processToProcessLinkList
被定义为局部变量而不是类的属性有关
注2:我建议阅读一些关于可观察对象和http请求的内容,例如