0

我是 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())有一种方法可以创建一个像下面这样的对象,而返回将是下面对象的列表。

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

方法签名

 `.getDownloadURL(): Observable<any>`  
4

1 回答 1

0

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

你所拥有的是已经是 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
            }))
        );
    })
);
于 2020-04-22T07:38:55.800 回答