【发布时间】:2020-06-18 08:51:40
【问题描述】:
我正在尝试获取包含在帖子日志中的文件。我在这里做错了什么?当我尝试pipecombineLatest 的结果时,数据不会在链中稍后出现。整个代码用于数据解析服务。
return this.API.getPost(route.params.id).pipe(
switchMap((response: any) => {
if (response["logs"]) {
response["logs"].map(logs => {
if (logs["files"]) {
return combineLatest(
...logs["files"].map(file=>
this.API.getFile(file.id)
)
).pipe(
// Not getting any files from this.API.getFile(file.id)
map(files =>
files.map(file => ({
url: this.sanitizer.bypassSecurityTrustResourceUrl(
window.URL.createObjectURL(file)
)
}))
)
),
map(files => {
logs["files"] = files;
return response;
});
}
});
}
return of(response);
})
)
【问题讨论】:
-
您可以尝试在您的
pipe中添加take(1)吗? -
你使用的是哪个版本的 RxJs
-
@Wilt 我正在使用 RxJs 6
-
在
if (response["logs"])、console.log(response)之前,确保logs是一个数组并且它有files这是一个数组。然后在combineLatest上执行console.log('before combineLatest)` 以确保您到达那里。可以帮助您在.pipe内部进行调试的运算符是tap运算符。您可以通过将debugger;放入其中或`log 语句来使用它来调试您的流。 -
您的括号似乎不平衡。这是您的代码的逐字副本吗?
标签: javascript angular typescript rxjs resolver