gpt4 book ai didi

angular - 在 Angular 的循环中订阅一个可观察对象

转载 作者:行者123 更新时间:2023-12-02 20:14:49 26 4
gpt4 key购买 nike

我有一个需要订阅 Observable 的用例然后循环响应以订阅另一个 Observable使用来自第一个 Observable 的数据.

  getTasks(taskType: Observable<any>): void {
taskType // Subscribing to the first Observable
.subscribe(
(tasks: any) => {
let row: InboxTasks;
for (const task of tasks) { // Looping through the result
if (task.assigned_id) { // I need to extract that data in order to use it as an argument of the second Observable below
this.auth.getUserById(task.assigned_id).subscribe((user) => this.username = `${user.firstname} ${user.lastname}`);
}
row = {
assigned: this.username ? this.username : '', // Here I use my newly created property
task: task.displayName
};
this.rowData = [
...this.rowData,
row
];
}
}
);
}

使用该方法循环 while 在第二个之前执行 Observable可以完成。我怎样才能设法使用这一秒 Observable在那种情况下?

谢谢

最佳答案

您可以首先根据第一个 Observable 的响应收集所有内部 Observable,然后等待所有 Observable 完成 forkJoin:

taskType
.pipe(
concatMap(tasks => {
const observables = [];
for (const task of tasks) {
observables.push(this.auth.getUserById(task.assigned_id));
}
return forkJoin(...observables).pipe(
map(innerResults => ({
innerResults,
tasks
}))
);
})
)
.subscribe(({ innerResults, tasks }) => ...);

关于angular - 在 Angular 的循环中订阅一个可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52646468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com