【发布时间】:2020-07-27 08:18:03
【问题描述】:
我有一个创建返回 Observable 的电影的 POST 请求,该请求的结果返回给我一个 ID,我需要使用该 ID 发出两个进一步的请求以添加导演和电影图像。
我有以下调用,它在添加 Director 时效果很好,但是当我到达第二个 flatMap 时,我无法在不添加订阅的情况下循环遍历图像以发布它们。
有没有更好的方法来做到这一点?我已经尝试过 switchMap、mergeMap 和 map,但如果没有订阅,我无法触发第二个请求。
this.Movie.createMovie(movie).pipe(
map((movie: Movie) => {
return movie;
}),
switchMap((movie: Movie) => this.movieRepository.postDirector(director, movie.id)),
flatMap((director: Director) => {
return movieImages.map((image) => {
return this.movieRepository.addMovieImage(image, director.movie_id).subscribe()
});
})
).subscribe({
next: (response: any) => {
console.log(response)
}
})
【问题讨论】:
-
flatMap解析从回调返回的 observable,但您的回调返回一个 array。你需要例如forkJoin将一个 observables 数组变成一个 observable 数组。 -
如果你的 rxjs 代码中有多个“订阅” - 你肯定做错了什么
-
@Andrei 不是一个很有帮助的评论。
标签: angular post rxjs subscribe