gpt4 book ai didi

angular - 如何在没有嵌入式订阅的情况下一个接一个地执行异步操作

转载 作者:行者123 更新时间:2023-12-05 02:56:53 30 4
gpt4 key购买 nike

我想使用 rxjs 一个接一个地执行异步操作。我知道在订阅中嵌入订阅不是一个好的做法,还有一些其他的 rxjs 运算符(flatMap\mergeMap,do 等。使用 pipe)。

我需要获取组件查询参数,设置一个全局变量 (globalVar),然后只有这样,才能继续下一个异步操作 (this..doSomething())。这是我使用嵌入式订阅的代码:*doSomething 返回一个 observable

this.route.paramMap.subscribe(params => 
{
globalVar = + params['userId'];
this.<someService>.doSomething().subscribe(result =>
{
this.func1();
});
}

最佳答案

对于要链接多个可观察对象的情况,一个完美的解决方案是 switchMap运营商。

this.route.paramMap
.pipe(
switchMap(params) => {
globalVar = + params['userId'];
return this.<someService>.doSomething()
})
.subscribe(result=> {this.func1();})

switchMap在从 this.route 中获取参数后会做的它将返回一个新的可观察对象,您可以稍后订阅。使用 switchMap 的好处在这种情况下,如果 this.route.paramMap 内部有变化而 this.<someService>.doSomething()被处理后,rxjs 将杀死正在处理的请求并开始新的请求,这样做是在 subscribe 内的 result 中的日期。将始终与 paramMap 的当前值相关.

关于angular - 如何在没有嵌入式订阅的情况下一个接一个地执行异步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60043036/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com