Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在javascript中与可观察的内部循环合并?_Angular_Rxjs_Observable - Fatal编程技术网

Angular 如何在javascript中与可观察的内部循环合并?

Angular 如何在javascript中与可观察的内部循环合并?,angular,rxjs,observable,Angular,Rxjs,Observable,在angular项目中,我有一个进程列表,我需要得到每个进程的链接进程,并将它们合并到一个数组中。唯一能得到链接进程列表的方法是使用可观察的方法。我应该使用哪些rxjs方法,以及如何获得流程的链接列表?我是rxjs的新手 我试图将每个结果推送到最终数组,但得到了如下错误 无法读取未定义的属性“push” let processToProcessLinkList = []; listOfProcesses.forEach(process => { // populate link l

在angular项目中,我有一个进程列表,我需要得到每个进程的链接进程,并将它们合并到一个数组中。唯一能得到链接进程列表的方法是使用可观察的方法。我应该使用哪些rxjs方法,以及如何获得流程的链接列表?我是rxjs的新手

我试图将每个结果推送到最终数组,但得到了如下错误
无法读取未定义的属性“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请求的内容,例如