我在网上看了很多,没有找到任何能描述我的问题的东西。
我现在用的是角5。
基本上,我想要执行一个put http请求,然后一旦它完成了一些事情,然后执行另一个get http请求并做更多的事情。
下面是使用嵌套订阅的代码(我知道您不应该这样做):
this.projectService.updateProject(this.project).subscribe(
subscribe => {
doSomethingAfterTheUpdate();
this.projectService.get(this.id).subscribe(
subscribe => {
doSomethingAfterTheGet();
});
});如您所见,我正在更新项目,然后获取项目。如何使用RxJS正确地做到这一点。我已经研究了Concat和MergeMap方法,但是我想在更新和get之后执行一些操作。
发布于 2018-11-02 18:04:43
您可以将doSomethingAfterTheUpdate视为一种副作用,因此您可以这样做:
import { mergeMap, tap } from 'rxjs/operators';
this.projectService.updateProject(this.project).pipe(
tap(_ => this.doSomethingAfterTheUpdate()),
mergeMap(_ => this.projectService.get(this.id))
).subscribe(_ => this.doSomethingAfterTheGet());请注意,我在某些管道操作中使用了_,因为您并不真正使用作用域值。
https://stackoverflow.com/questions/53123463
复制相似问题