6

这是我的代码:

this._api.getCompanies().subscribe(
    res => this.companies = JSON.parse(res),
    exception => {if(this._api.responseErrorProcess(exception)) { // in case this retured TRUE then I need to retry() } }
)

如果发生异常,它将被发送到 API 中的一个函数,然后true如果问题得到修复(例如令牌刷新)则返回,并且它只需要在修复后再次重试

我不知道如何让它重试。

4

2 回答 2

6

在您的.getCompanies()通话中.map添加一个.retryWhen

.retryWhen((errors) => {
    return errors.scan((errorCount, err) => errorCount + 1, 0)
                 .takeWhile((errorCount) => errorCount < 2);
});

在这个例子中,observable 在 2 次失败后完成(errorCount < 2)。

于 2016-10-21T11:35:01.087 回答
0

你的意思是这样的?

this._api.getCompanies().subscribe(this.updateCompanies.bind(this))

updateCompanies(companies, exception) {
    companies => this.companies = JSON.parse(companies),
    exception => {
        if(this._api.responseErrorProcess(exception)) {
            // in case this retured TRUE then I need to retry()
            this.updateCompanies(companies, exception)
        }
    }
}
于 2016-10-21T11:24:50.810 回答