我正在运行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]);
展开运算符(…)展开数组。