Angular Ngrx-如何获得差分调用循环数组



在这种效果下,我将采取包含类似的对象的操作有效载荷

{
firms: [{ id: 1, firmName: 'string', roles: ['admin', 'supadmin', 'user'] }],
type: "loadFolder",
userId: 1
};

对于角色数组中的每个字符串,以及操作负载中的userId,我必须执行httpCall,将其作为参数传递,然后我需要根据角色填充三个不同的列表(userList、adminLIst和supadminList(。我找不到解决办法。

loadFolder$ = createEffect(() => {
return this.action$.pipe(
ofType(SidebarAction.loadFirmSuccess),
switchMap(action => {
let roles: Array < string > = [];
let supadminlist = [];
let adminList = [];
let userList = [];
action.firms.map(
firm => {
firm.roles.map((role: string) => {
roles.push(role);
});
}
);

roles.forEach(role => {
this.sidebarService.getFolders(action.userId, role).subscribe(res => {
switch (role) {
case ('supadmin'):
supadminlist = res;
break;
case ('admin'):
adminList = res;
break;
case ('user'):
userList = res;
}
});
});
return sidebarAction.loadFoldersSuccess({supadmin, adminList, userList});

}),
);
});

我试着用这种方式。。。我不知道如何实现这个,这个解决方案不起作用

在http调用完成之前返回loadFoldersSuccess操作。使用forkJoin进行http调用,然后返回loadFoldersSuccess

const a = {}
roles.forEach(role => {
a[role] = this.sidebarService.getFolders(action.userId, role)
});
return forkJoin(a).pipe(map(x => {
return sidebarAction.loadFoldersSuccess(x);
}));

最新更新