批量发送阿波罗请求

时间:2018-09-15 09:31:38

标签: graphql apollo react-apollo

我有一个设置了batch requests的阿波罗前端。但是,某些请求不应包含在批处理中:

  • 组件依赖于加载请求的“小”版本
  • “完整”请求应同时发生,并输入到缓存中以备后用
  • 如果小而完整的请求以同一批发送,则直到完整的请求完成后才返回,这会花费很长时间。

我想到了两个非理想的解决方案:

  • 在完成小请求后,使用onCompleted启动全部请求。不理想,因为出于速度考虑,我想同时启动两者
  • 设置两个后端端点,一个具有批处理功能,一个不具有批处理功能,并在适当的地方使用split定向请求。可以,但我想在没有额外终点的情况下逃脱

有什么想法吗?

编辑:我已经意识到第一个解决方案是不好的,因为它可能导致其他不相关的查询被延迟-因此到目前为止,唯一的选择是最后一个解决方案。

1 个答案:

答案 0 :(得分:1)

我不是该主题的专家,但是您似乎正在寻找apllo-link-batch-http中的batchKey选项。例如,最简单的方法是为您的操作添加关键字:

const link = BatchHttpLink({
  batchKey: operation =>
    operation.name && operation.name.value.startsWith('eager_') ? 'eager' : 'normal'
});