combineLatest没有被调用

问题描述 投票:0回答:2

我有以下代码

我是rjxs编程的新手,所以想知道有什么可以从根本上解决问题。我想做一个任务,先把所有最新的结果合并,然后再订阅分配结果。 但是 combineLatest 好像没有工作。什么可以是原因?

const downloadUrls$: any = Array.from(event.target.files).map((file: any) => {
  const fileName = ...
  const path = ...
  const fileRef = ....
  const task: any = ...

  return task.snapshotChanges().pipe(
    filter(snap => snap.state === firebase.storage.TaskState.SUCCESS),
    switchMap(() => {
      return fileRef.getDownloadURL().pipe(
        map((url: string) => ({
          name: fileName,
          filepath: url,
          relativePath: path,
        }))
      );
    })
  );
});

combineLatest(...downloadUrls$).subscribe((urls: any) => {
  console.log(hi); // not printing
});
firebase rxjs rxjs5 rxjs6 combinelatest
2个回答
0
投票

combinelatest不启动的原因是主题的引用,你应该改成这个版本。因此,删除... ...之前的下载Urls$。

combineLatest(downloadUrls$).subscribe((urls: any) => {
      console.log(hi); // not printing
    });

Combinelatest是用于合并两个或更多的观测值。有什么特殊的原因使用combinelatest与一个observable?否则你可以改成更简单的版本,如

downloadUrls$.subscribe((urls: any) => {
          console.log(hi); // not printing
        });

0
投票

最新版本的 cobineLateste() 接收一个数组作为参数。

combineLatest(downloadUrls$).subscribe((urls: any) => {
  console.log(hi); // not printing
});
© www.soinside.com 2019 - 2024. All rights reserved.