如何在 Angular / NgRx Subscription with Interval 中设置错误延迟
How to set a delay on Error in Angular / NgRx Subscription with Interval
我希望我的 interval
在出现错误时等待 5 秒,然后再尝试点击我的 service
。就像成功调用时一样。
使用 Angular 12 和 NgRx 6,我的 ngOnInit()
中有以下代码
this.switchMapSubscription = interval(5000).pipe(
startWith(0),
switchMap(() => this.service.getData(dataKey))
).subscribe(
data => {
this.buildData(data);
}
);
当this.service.getData()
收到错误时,它会立即不断重试。
我试图延迟 interval()
:
this.switchMapSubscription = interval(5000).pipe(
startWith(0),
switchMap(() => this.service.getData(dataKey)),
retryWhen(error => error.pipe(delay(5000)))
).subscribe(
data => {
this.buildData(data);
}
);
并且在 subscribe()
:
this.switchMapSubscription = interval(5000).pipe(
startWith(0),
switchMap(() => this.service.getData(dataKey)),
).subscribe(
data => {
this.buildData(data);
},
err => err.pipe(delay(5000))
);
我尝试的两个解决方案都得到了与原始代码相同的结果。
当错误出现时,你想延迟,但当错误不出现时,你想退回正确的。
this.switchMapSubcribtion = this.service.getData(dataKey).pipe(
retryWhen(err => return err.pipe(delay(5000)))
).subscribe(...)
我希望我的 interval
在出现错误时等待 5 秒,然后再尝试点击我的 service
。就像成功调用时一样。
使用 Angular 12 和 NgRx 6,我的 ngOnInit()
this.switchMapSubscription = interval(5000).pipe(
startWith(0),
switchMap(() => this.service.getData(dataKey))
).subscribe(
data => {
this.buildData(data);
}
);
当this.service.getData()
收到错误时,它会立即不断重试。
我试图延迟 interval()
:
this.switchMapSubscription = interval(5000).pipe(
startWith(0),
switchMap(() => this.service.getData(dataKey)),
retryWhen(error => error.pipe(delay(5000)))
).subscribe(
data => {
this.buildData(data);
}
);
并且在 subscribe()
:
this.switchMapSubscription = interval(5000).pipe(
startWith(0),
switchMap(() => this.service.getData(dataKey)),
).subscribe(
data => {
this.buildData(data);
},
err => err.pipe(delay(5000))
);
我尝试的两个解决方案都得到了与原始代码相同的结果。
当错误出现时,你想延迟,但当错误不出现时,你想退回正确的。
this.switchMapSubcribtion = this.service.getData(dataKey).pipe(
retryWhen(err => return err.pipe(delay(5000)))
).subscribe(...)