【发布时间】:2018-08-18 01:00:38
【问题描述】:
我正在创建一个 Angular Http 重试拦截器。当我重试 1 次时,我的代码如下所示:
return next.handle(req).pipe(
retryWhen((error) => {
return error.pipe(
delay(1000),
take(1),
concatMap((err) => {
return _throw({ ...err, message: `Sorry, there was an error (after 1 retry)` });
})
);
})
);
这似乎有效。我可以抛出原始错误。
现在,当重试次数为零时,这不起作用。我认为那是因为我们正在执行 take(0)。但是,concat 运算符将起作用:
return next.handle(req).pipe(
retryWhen((error) => {
return error.pipe(
delay(1000),
take(0),
concat(_throw({ message: `Sorry, there was an error (after 0 retries)` }))
);
})
);
但问题是我无法得到原始错误。在我的零重试场景中,我可以使用哪些其他运算符来获取/抛出原始错误?
【问题讨论】: