如何在 angularfire2 中使用 Observable.Zip?
How to use Observable.Zip with angularfire2?
我正在使用 Angular 5 和 angularfire2 与 Firebase 一起工作。
我有一个字符串数组,代表 paths 到 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。
这应该与使用 combineLatest
和 forkJoin
的用例相同。令我惊讶的是,我最近发现它也不适用于 Observable.concat
。
我正在使用 Angular 5 和 angularfire2 与 Firebase 一起工作。 我有一个字符串数组,代表 paths 到 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。
这应该与使用 combineLatest
和 forkJoin
的用例相同。令我惊讶的是,我最近发现它也不适用于 Observable.concat
。