当我获得状态409时,我尝试按角度重试http请求,但是当我收到http请求后放入.retryWhen
时,我收到:
类型“可观察”上不存在属性“ retryWhen”。 [2339]
我尝试:
const requests = this.produtosConfirmadosAnuncio.map(p => {
return this.marketplaceService.anunciar(p).pipe(take(1))
});
forkJoin(requests)
.retryWhen(error => {
return error
.flatMap((error: any) => {
if (error.status === 503) {
return Observable.of(error.status).delay(1000)
}
return Observable.throw({
error: 'No retry'
});
})
.take(5)
.concat(Observable.throw({
error: 'Sorry, there was an error (after 5 retries)'
}));
})
.subscribe(resultAnuncios => {
console.log(resultAnuncios);
}
我导入:
import 'rxjs/add/operator/delay';
import 'rxjs/add/operator/take';
import 'rxjs/add/observable/throw';
import 'rxjs/add/observable/concat';
我的服务:
anunciar(produtosConfirmados: any):Observable<any>{
return this._http.post<any>(AppSettings.API_ENDPOINT + 'anuncio/anunciar', {
sku: xxx.,
}
})
答案 0 :(得分:0)
您解决了这个问题吗?我在forkjoin内尝试retryWhen时遇到类似问题。我一直试图循环调用,直到每个调用在其响应数据中返回特定状态为止。任何在响应中返回“待处理”状态的电话都将被重试。