如何使用Apollo-Client为请求设置超时

men*_*eit 6 javascript apollo graphql react-native apollo-client

我有一个React-Native应用程序,我向GraphQL服务器发出请求.一切正常,但我需要一种方法将请求/客户端的超时设置为5或10秒.目前,该请求需要很长时间才能超时(大约1分钟).

这是我如何使用客户端的快速示例.

const client = new ApolloClient({
  networkInterface: createNetworkInterface({
    uri: `${config.server_hostname}/graphql`
  })
});

client.query({ query: gqlString });
Run Code Online (Sandbox Code Playgroud)

我无法通过StackOverflow,谷歌搜索或Apollo的文档找到任何解决方案.

Ret*_*old 5

Apollo 客户端使用(v1.9apollo-link-http)fetch API 来发送请求。因此没有跨浏览器的方式来中止 fetch。您可以创建自己的网络接口或链接并使用以下内容:

const oldfetch = fetch;
fetch = function(input, opts) {
  return new Promise((resolve, reject) => {
      setTimeout(reject, opts.timeout);
      oldfetch(input, opts).then(resolve, reject);
  });
}
Run Code Online (Sandbox Code Playgroud)

但要小心,因为这实际上并不会中止请求。您最终可能会收到大量正在运行的请求并达到浏览器限制。

顺便说一句,看起来 apollo-link-httpAbortController准备的;-)