gpt4 book ai didi

angular - 如何将 Observable.Zip 与 angularfire2 一起使用?

转载 作者:行者123 更新时间:2023-12-01 15:24:12 25 4
gpt4 key购买 nike

我正在使用 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);
});

这就是我一直在尝试的,但是可观察对象似乎没有触发。控制台上会显示任何结果。关于如何运作的任何想法。

我尝试了 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

关于angular - 如何将 Observable.Zip 与 angularfire2 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48437228/

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