我有一个 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.9 和 apollo-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/