SPA 可以针对单个 GraphQL 服务器发出并行异步查询吗?

Posted

技术标签:

【中文标题】SPA 可以针对单个 GraphQL 服务器发出并行异步查询吗?【英文标题】:Can an SPA issue parallel async queries against a single GraphQL server? 【发布时间】:2017-12-13 00:08:04 【问题描述】:

GraphQL 通常服务于单个端点。例如,我能否拥有一个带有六个实时状态显示的 SPA 页面,每个页面都向同一个端点发出一个独立的承诺包装请求?查询负载需要时间来组装,并且不会按照收到请求的顺序完成。此外,某些状态负载可能需要几秒钟或更长时间才能完成。我不想批量处理请求,我希望每个显示器的数据在其数据可用后立即交付。

【问题讨论】:

听起来好像您需要订阅(在 graphql-java 中尚未准备好)。除此之外,我不明白这个场景有什么特别之处?为什么并发请求会成为问题? 他们不是。作为单个端点的结果的总菜鸟问题,不知道解析器可以返回承诺,以及 graphiql 的串行性质(它忽略了除最近查询之外的所有响应)。为了测试,我添加了一个解析器,它返回一个包含 setTimeout 的承诺,在随机超时后解析响应。然后我只需手动提交一系列快速查询。它们重叠并根据需要正确解析。感谢您的 cmets。 我也玩过订阅 - 令人兴奋的东西。 【参考方案1】:

是的,你可以,你会失去 GraphQL 的好处之一,但除了 GraphQL 服务器增加的少量延迟之外,在你遇到需要水平扩展 GraphQL 服务器之前,你不会遇到任何缺点。

【讨论】:

以上是关于SPA 可以针对单个 GraphQL 服务器发出并行异步查询吗?的主要内容,如果未能解决你的问题,请参考以下文章

谈谈 GraphQL 的历史组件和生态系统

是否可以将单个MVC剃刀视图/页面转换为SPA?

Oauth + SPA + API 后端

第1315期GraphQL 基于 SPA 架构的工程实践

使用 Django、GraphQL、Apollo 和 VueJS 进行 URL 管理

干货 | GraphQL 基于 SPA 架构的工程实践