我有一个 apollo 前端,带有 batch requests设置。但是,某些请求不应包含在批处理中:
- 组件依赖于加载请求的“小”版本
- “完整”请求应该同时发生,并输入到缓存中供以后使用
- 如果小请求和完整请求在同一批处理中发送,则直到完整请求完成后才会返回,这会花费很长时间。
我想到了两种不理想的解决方案:
- 小请求完成后,使用
onCompleted
启动完整请求。不理想,因为为了速度我想同时启动两个 - 设置两个后端端点,一个带批处理,一个不带批处理,并使用 split在适当的情况下提出请求。可以,但我想在没有额外端点的情况下离开
有什么想法吗?
编辑:我意识到第一个解决方案不好,因为它可能导致其他不相关的查询被延迟 - 所以到目前为止唯一的选择是最后一个解决方案。
最佳答案
我不是该主题的专家,但似乎 apllo-link-batch-http 中的 batchKey
选项就是您正在寻找的。最简单的方法是为您的操作添加关键字前缀:
const link = BatchHttpLink({
batchKey: operation =>
operation.name && operation.name.value.startsWith('eager_') ? 'eager' : 'normal'
});
关于graphql - 在批处理之外发送 apollo 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52343456/