繁体   English   中英

如何在angularfire2中使用Observable.Zip?

[英]How to use Observable.Zip with angularfire2?

我正在使用Angular 5和angularfire2来使用Firebase。 我有一个字符串数组,表示进入firebase的路径 我目前正在做的是:

const pathList: string[] = ['path1', 'path2', 'path3'];
const observableList     = [];
pathList.map((location: string[]) => {
    observableList.push(this.db.object(`path_to_something/${location}).valueChanges());
});

const combined = zip(observableList);
combined.subscribe((values: any[]) => {
    console.log('DATA FROM ZIP', values);
}, err => {
    console.log('DATA FROM ZIP ERROR', err);
});

这就是我一直在尝试但是,Observables似乎没有触发。 显示控制台上的任何结果。 任何关于如何工作的想法。

我尝试使用forkJoin,也没有尝试过。 但我尝试使用combineList,它的工作原理。 问题是,我必须使用zip

如果相同的Rx链与combineLatest一起使用,它也应该与zip一起使用。 如果它没有发出任何东西,请尝试展开Observables数组:

const combined = zip(...observableList);

您可以使用以下演示进行尝试,并查看如果您按原样传递数组,它将不会发出任何内容:

http://jsbin.com/davadol/3/edit?js,console

const a = Observable.of(1);
const b = Observable.of(2);
const c = Observable.of(3);

Observable.zip([a, b, c]).subscribe(console.log);

但是,如果你解开它的数组:

Observable.zip(...[a, b, c]).subscribe(console.log);

说实话,我很惊讶它不适用于数组,因为通过查看我认为它应该的类型,请参阅https://github.com/ReactiveX/rxjs/blob/5.5.6/src/operators/zip .ts#L26 这应该与使用combineLatestforkJoin用例相同。 令我惊讶的是,我最近发现它也不适用于Observable.concat

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM