【发布时间】:2019-03-29 07:15:08
【问题描述】:
我想继续重试对服务器的调用(看看它是否返回真)。
在我的服务中,我创建了一个 http 调用,如果它能够检索到一个值,则返回 true,当它无法检索到一个值时返回 false(因此会出现错误)。
public retryServerCheck(): Observable<boolean> {
return this._httpClient.get<boolean>(this.baseUrl + 'ServerCheck')
.pipe(
map(() => true),
catchError(() => of(false)
));
}
在我的组件中,我想重试此操作,直到我返回 true,这就是我的问题。
this._serverService.retryServerCheck()
.subscribe(
(isOnline) => {
if (isOnline) {
this._helperServer.navigateToComponent('Login', undefined, 0);
console.log('online');
} else {
this.lastRetry = 'A little later...';
console.log('offline');
}
}
);
我尝试在订阅前添加一个管道,但没有成功
this._serverService.retryServerCheck()
.pipe(
retry(10),
delay(100)
).subscribe(
(isOnline) => {
if (isOnline) {
this._helperServer.navigateToComponent('Login', undefined, 0);
console.log('online');
} else {
this.lastRetry = 'A little later...';
console.log('offline');
}
}
);
我能够在我的服务中进行重试,但是我无法在我的组件中对其做出反应
public retryServerCheck(): Observable<boolean | HttpError> {
return this._httpClient.get<boolean>(this.baseUrl + 'ServerCheck')
.pipe(
retryWhen(errors => errors.pipe(delay(500))),
catchError(err => {
return this._helperService.handelHttpError(err);
})
);
}
【问题讨论】:
-
你尝试了
retry(1)函数而不是retryWhen()
标签: javascript angular typescript rxjs