0

我有以下代码

我是 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
});
4

2 回答 2

0

combinelatest 没有触发的原因是该主题的参考。您应该更改为此版本。因此,在 downloadUrls$ 之前删除 ...。

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

Combinelatest 用于合并两个或多个 observables。将 combinelatest 与一个 observable 结合使用有什么具体原因吗?否则,您可以更改为更简单的版本,例如

downloadUrls$.subscribe((urls: any) => {
          console.log(hi); // not printing
        });
于 2020-04-22T09:46:38.300 回答
0

cobineLateste()接收数组作为参数的最新版本:

combineLatest(downloadUrls$).subscribe((urls: any) => {
  console.log(hi); // not printing
});
于 2020-04-22T18:09:38.337 回答