combineLatest没有被调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了combineLatest没有被调用相关的知识,希望对你有一定的参考价值。

我有以下代码

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

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

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

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

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

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

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

以上是关于combineLatest没有被调用的主要内容,如果未能解决你的问题,请参考以下文章

combineLatest不会发出最新值

onRequestPermissionsResult 永远不会在片段中被调用 [重复]

片段内部未调用 onActivityResult [重复]

订阅 combineLatest 中的所有 observables

Sleep() 方法后的代码片段没有被执行

在 RxJS 5.0 中找不到“combineLatest”