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