如果我在错误链接中执行forward(operation)
,它将重试该操作,但是,它不在请求链中,将不再触发其他操作,所有内容都将被打印出来。寻找一种将结果传递回我的应用的方法(例如,帖子创建成功后跳转到列表页面)。
// ErrorHandler: (errResponse: ErrorResponse) => {}:
// ! It did retry, but not in that chain anymore !
forward(operation).subscribe({
next: console.log,
error: console.log,
complete: console.log
});
我正在研究apollo-link-retry
lib,但仍然不确定它实际上是如何触发另一个请求的,并确保新请求也将通过所有链接(尤其是HttpLink,或者没有通过) ?)。
更新:
我已将我的networkErrorHandler
更新为:
return new Observable(observer => {
SnackBar.show({
title: msg,
// duration: SnackBar.LENGTH_LONG,
duration: 20000,
action: {
title: 'Retry',
color: 'yellow',
onPress: () => {
forward(operation).subscribe(observer);
// TODO: Needs to unsubscribe
}
}
});
});
现在它可以工作了,它可以重试,并且观察者也可以工作,下面的链接都被执行了,但是现在我不知道如何优雅地退订已订阅的forward
(NextLink)。