объединениеПоследний не вызывается - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть следующий код

Я новичок в программировании на rjxs, поэтому мне интересно, что может быть причиной root. Я пытаюсь выполнить определенную задачу и сначала объединить все последние результаты, а затем подписаться, чтобы назначить результаты. Но объединение последнего не работает, похоже. В чем может быть причина?

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
});

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Последние версии cobineLateste() получают массив в качестве параметра:

combineLatest(downloadUrls$).subscribe((urls: any) => {
  console.log(hi); // not printing
});
0 голосов
/ 22 апреля 2020

Причиной того, что комбинат не сработает, является ссылка на предмет. Вы должны перейти на эту версию. Так что удаляем ... перед загрузкойUrls $.

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

Combinelatest предназначен для объединения двух или более наблюдаемых. Есть ли какая-то конкретная c причина, по которой используется комбинат с одной наблюдаемой? В противном случае вы можете просто перейти на более простую версию, например

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