Return switchMap 中的对象

Return object inside switchMap

我是 rjxs 编程的新手,所以想知道如何执行以下操作。

    const downloadUrls$: any = filelist.map((file: any) => {
      const fileName = ...
      const path = ...
      const fileRef = ....
      const task: any = ...

      // get notified when the download URL is available
      return task.snapshotChanges().pipe(
        filter(snap => snap.state === TaskState.SUCCESS),
        switchMap(() => from(fileRef.getDownloadURL()))
      );
    });

所以在上面的代码中而不是做 from(fileRef.getDownloadURL()) 有一种方法我可以创建一个像下面这样的对象并且 return 将是下面对象的列表。

             from (
                {
                 name: fileName,
                 filepath: fileRef.getDownloadURL(),
                 relativePath: path
                }
              )

方法签名

 `.getDownloadURL(): Observable<any>`  

我没有任何可以从您提供的代码运行的东西,所以我写这个只是作为一个概念。

您拥有的是已经是 Observable 的东西 (fileRef.getDownloadURL())。而我们需要的是新对象。我们可以通过映射之前的 Observable 并将其更改为我们需要的结果来实现这一点。大致如下:

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