您可以使用forkJoin
和from
操作符来实现在从集合中获取Observables时自动执行forkJoin
的功能。下面是一个示例代码:
import { Component, OnInit } from '@angular/core';
import { Observable, forkJoin, from } from 'rxjs';
@Component({
selector: 'app-example',
template: `
Example Component
`
})
export class ExampleComponent implements OnInit {
collection: Observable[] = [];
ngOnInit() {
// 假设您从某个地方获取到了一个集合(数组)的Observables
// 在这个示例中,我们使用from操作符从普通数组创建Observables
const array = [1, 2, 3];
this.collection = array.map(item => this.getObservable(item));
// 使用forkJoin来自动执行集合中的Observables
forkJoin(this.collection).subscribe(results => {
console.log(results); // 在这里打印结果
});
}
// 模拟从集合中获取Observables的方法
getObservable(item: number): Observable {
return from(Promise.resolve(`Result ${item}`));
}
}
在这个示例中,我们首先创建一个普通数组array
,然后使用map
方法将每个数组项转换为一个Observable。在getObservable
方法中,我们使用from
操作符将每个数组项包装在一个Promise中,并返回一个Observable。
然后,我们使用forkJoin
操作符来自动执行集合中的Observables,并订阅结果。在这个示例中,我们使用console.log
打印结果。
请注意,forkJoin
操作符将等待所有的Observables都发出一个值,然后将所有的值作为一个数组发出。如果集合中的任何一个Observable发生错误,forkJoin
将立即发出错误。