我正在尝试填充一个名为processs
的组件中的数组,它是process
的数组。每个进程
还有一个任务
列表。
因此,目前,我正在处理两个api调用,它们是:
/process
和/process/{processId}/tasks
我使用/processs
获取所有进程,并首先填充processs
数组。然后我使用每个process
的进程id来调用第二个API,以获取该进程的任务。
当前,我的代码看起来如下所示:
this.processes.forEach((process, index) => {
myService.getTasks().subscribe((tasks) => {
process.tasks = tasks;
})
})
我知道我可以创建一个observables数组,并使用Observable.forkJoin()
等待所有这些异步调用完成,但我希望能够为每个调用定义订阅回调函数,因为我需要对Process
的引用。我有什么想法可以处理这个问题吗?
应避免使用for
循环来发出多个HTTP请求,然后分别订阅所有请求,以避免打开许多observable
连接。
正如@Juan Mendes所提到的,observable.forkjoin
将返回一个任务数组,该数组与进程数组中每个进程的索引匹配。您还可以在每个进程到达时将任务分配给它们,如下所示:
getTasksForEachProcess(): Observable<any> {
let tasksObservables = this.processes.map(process, processIdx) => {
return myService.getTasks(process)
.map(tasks => {
this.processes[processIdx].tasks = tasks; // assign tasks to each process as they arrive
return tasks;
})
.catch((error: any) => {
console.error('Error loading tasks for process: ' + process, 'Error: ', error);
return Observable.of(null); // In case error occurs, we need to return Observable, so the stream can continue
});
});
return Observable.forkJoin(tasksObservables);
};
this.getTasksForEachProcess().subscribe(
tasksArray => {
console.log(tasksArray); // [[Task], [Task], [Task]];
// In case error occurred e.g. for the process at position 1,
// Output will be: [[Task], null, [Task]];
// If you want to assign tasks to each process after all calls are finished:
tasksArray.forEach((tasks, i) => this.processes[i].tasks = tasksArray[i]);
}
);
也请看一下这篇文章:发送多个异步HTTP GET请求
对Java来说很新鲜,我在大学的一个入门班做一个项目。我正在尝试做一个方法,在String数组中搜索输入的状态并返回索引。如果用户输入不在数组中的查询,我希望它要求一个新的状态来搜索。我的例外是说“变量statePotion可能尚未初始化。”下面是代码。 提前谢谢!
问题内容: 我有一个二维布尔数组’poorSignal’,需要编写一个返回网格的方法,如果数组上的某个点为true,则显示X,如果为false,则显示O。这是我的代码: 当我编译时,它在方法的最后一行给出了“丢失的返回语句”。我也不确定在打印数组时’return“ \ n”是否可以添加新行。 这是一个分配问题,所以我不能直接打印它,也不能仅打印布尔值-它必须是产生网格的方法。 问题答案: 编译器无
问题内容: 现在,父级for循环()在第一个findOne触发之前完成,因此,这仅循环通过repliesIDsArray..asynchronous。的最后一个元素。 此代码集的承诺版本的正确语法是什么?Promisification的新手,想知道如何开始Promisify +遍历数组+解释if语句。 蓝鸟是必需的,并且被调用。 问题答案: 正如本杰明所说,不要使用循环,而应使用(或) 在此处查看
我创建了一个2D数组,需要将元素或映射到要打印的彩色像素。这就是我所拥有的。 像素数组,表示不同颜色的整数值 我测试了,它工作得很好。在中的每个for循环旁边都会弹出唯一的错误,其中声明: 此外,int刻度用于定位像素应该在的位置,并赋予其正确的大小
考虑以下代码: 它应该从循环到(231-1),但它没有。一旦达到224,就不再工作了,原因我完全无法理解。 在VS的即时窗口中,我尝试了以下方法: 为什么会这样?2241有什么特别之处?
我对Python比较陌生(我的大部分经验都是在SAS领域),所以请大家多多忍耐。 我试图从现有的数据集创建一些CSV,并根据定义的列表导出它们。CSV的命名应该基于相应的列表值是动态的。 表1_cc.to_csv(r“C:\users\etc\”+cc+“.csv”) 我得到的错误是:typeerror:只能将str(而不是“list”)连接到str 输出应该是3个文件:table1_ad-1.C