NestJS上的 forkJoin在迁移到新版本后不起作用



我正在运行nestjs应用程序,并有一个和平的代码,使用forkJoin

const results: string[] = [];
const args = ['arg1', 'arg2', 'arg3', 'arg4', 'arg5', 'arg6'];
....
switchMap(() => {
const setToHandle = [];
args.forEach(arg => setToHandle.push(this.doWorksAndGetResult(arg)));
return forkJoin(setToHandle);
}),
tap(() => {
this.logService.debug(...results);
})

所以这个工作很好,我得到的结果打印到日志。但是这个forkJoin(setToHandle)现在不赞成了,应该这样使用吗forkJoin ([setToHandle])根据文件。但是它不工作,没有结果打印在日志中,没有在doWorksAndGetResult函数内调用的可观察对象。谁能帮我一下吗?

在添加足够的代码以使示例工作后,我发现强类型setToHandle修复了这个问题。(至少在我的版本的你的代码)

const setToHandle: string[] = [];

否则,我认为语言服务是混乱的。

根据您的评论更新:

初始化无效:

const setToHandle: Observable<void> = []; 

不能将Observable<void>初始化为空数组[]。然后你不能在你的代码中把push变成Observable<void>

你能提供足够的工作代码,让我们得到一个更好的想法,你正在尝试做什么。从这个Stackblitz开始:https://stackblitz.com/edit/angular-ivy-yp3ocd

根据你后来的评论更新2:

forkJoin() takes in an array.

const setToHandle: Observable<boolean>[] = [];

setToHandle已经定义为数组。

传入[setToHandle]是将数组放入另一个数组。

如果您确实需要使用方括号,那么可以这样做:

return forkJoin([...setToHandle]);

展开运算符(…)展开数组。

最新更新