如何在React-Apollo中手动重试操作?

时间:2018-08-04 13:42:45

标签: react-apollo

如果我在错误链接中执行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)。

0 个答案:

没有答案