类型为“ Observable <any []>”的.retryWhen重试http请求不返回“ retryWhen”

时间:2019-01-28 18:38:17

标签: angular typescript

当我获得状态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.,
        }
    })

1 个答案:

答案 0 :(得分:0)

您解决了这个问题吗?我在forkjoin内尝试retryWhen时遇到类似问题。我一直试图循环调用,直到每个调用在其响应数据中返回特定状态为止。任何在响应中返回“待处理”状态的电话都将被重试。