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

标签 javascript react-native graphql apollo apollo-client

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

这是我如何使用客户端的简单示例。

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

client.query({ query: gqlString });

我一直无法通过 StackOverflow、谷歌搜索或 Apollo 的文档找到任何解决方案。

最佳答案

Apollo 客户端使用(v1.9apollo-link-http)获取 API 来发送请求。因此有is no cross-browser way to abort a fetch .您可以创建自己的网络接口(interface)或链接并使用如下内容:

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

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

顺便说一句,它看起来像 apollo-link-http is prepared对于 AbortController ;-)

关于javascript - 如何使用 Apollo-Client 为请求设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47198402/

相关文章:

go - 我的节点ID的base64哈希值不是我期望的值

javascript - C3 js无法读取未定义的属性 'width'

javascript - Coffeescript 访问函数

javascript - 如果检查了输入,我需要增加变量 x 的值,然后警告总计 x

javascript - 获取 "supportLibVersion", "playServicesVersion"和 "androidMapsUtilsVersion"配置 react-native-maps 中的值

graphql - 在 GraphQL 中命名查询和突变有什么意义?

javascript - pixijs 中的模糊 SVG

javascript - 使用React Native Onauth而不是函数对Firebase中的用户进行身份验证

java - 从输入中找到路径为 'lib/arm64-v8a/libc++_shared.so' 的 2 个文件...-react native

java - GraphQL 自定义标量类型在 Spring Boot 应用程序中不起作用