gpt4 book ai didi

angular - 在 foreach 循环中订阅多个 observable

转载 作者:太空狗 更新时间:2023-10-29 18:18:31 27 4
gpt4 key购买 nike

我有一个带有子组件查询列表的组件。这些子组件中的每一个都公开了两个方法,一个返回表单是否有效作为 observable<boolean>。 ,另一个返回一个对象。

在父组件中,我想遍历子组件并检查每个子组件是否有效。我有这样的代码

    let valid: boolean = true;
children.forEach(r => {
r.validate().subscribe(v => {
if(!v){
valid = v;
}
});
});

如果在 foreach 循环后 valid 仍然为真,它会继续收集对象。但是,我认为这是不正确的,因为 foreach 循环可能会在所有可观察对象发出值之前完成。我也不确定将多个订阅分配给同一个变量的效果。

除了让 validate() 方法返回一个常规 bool 值之外,还有更好的方法吗?像 forkjoin 这样的东西会更好吗?foreach 循环只是将所有 observable fork 在一起并发出一个数组?

最佳答案

您可以使用 forkJoin .

When all observables complete, emit the last emitted value from each.


import { forkJoin } from 'rxjs/observable/forkJoin';

const allObs = forkJoin(...children.map(r => r.validate()));
allObs.subscribe(res => console.log(res)); // Do what you want with the array of results

关于angular - 在 foreach 循环中订阅多个 observable<boolean>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51265037/

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