从服务器收到一些响应后,我想重定向到另一个页面。 (此过程太慢,几乎需要60秒钟才能从服务器获得响应)。同时,我将展示一些微调器,当收到响应时,我将重定向到另一页面。看起来很简单?
是的,但是问题是,在收到响应时页面不会自动重定向。它停留在同一页面上,现在,如果我单击页面上的任意位置,它将重定向到另一个页面,情况有点奇怪。
this.optimizationService
.runOptimization(this.runOptimizationModel)
.subscribe(optimizationResult => { // this is the first service which send request to server.
this.optimizationService.notificationEvent.subscribe(eventData => {
console.log(eventData); // this is another service in which, when I will get the response, I want to redirect to another page.
if (eventData && eventData.length) {
this._router.navigate([this.optimizationResultScreenURL, 'e1517589-905e-485b-b7ee-7bc6521dcc93']); // This is url rerouting. If I cut and paste this line after first service subscription, it is working fine.
}
});
});
是这种情况,因为我们在60秒后收到第二个服务的响应。这是一个有点奇怪的情况,但是它正在发生。 这是60秒的 villain 。
答案 0 :(得分:2)
您可以按照这些方法尝试一些吗? (多个嵌套订阅不是一个好习惯)
this.optimizationService
.runOptimization(this.runOptimizationModel)
.pipe(
switchMap(optiResult => this.optimizationService.notificationEvent),
filter(eventData => eventData && eventData.length),
tap(eventData => this._router.navigate(/* extract URL data here */))
)
.subscribe();
我不清楚第一个请求的作用或在哪里使用它的响应,但是我的回答是使用RxJS运算符来控制流程。希望这是有用的。