不要等待父级@GraphQLContext解析程序解析



在执行子解析程序之前,是否可以不必等待父@GraphQLContext解析程序完全解析?

通过查看源代码,我认为这可能是通过利用期货来实现的,比如:

@GraphQLQuery
public Future<User> user() {
return CompletableFuture.supplyAsync(...);
}
@GraphQLQuery
public TwitterProfile twitterProfile(@GraphQLContext Future<User> user) {
...
}

有什么想法吗?

您可以使用CompletionStage(CompletableFuture是其中的一个子类型(组成异步链。简单的Future是不够的,因为它不允许合成。这是graphql-java本身的一个特性,而不是SPQR。

@GraphQLQuery
public CompletableFuture<User> user() {
return CompletableFuture.supplyAsync(...);
}
@GraphQLQuery
public TwitterProfile twitterProfile(@GraphQLContext User user) {
...
}

请注意,线程和并发仍然完全在您的控制之下。这只允许您根据需要编写异步解析器,但您需要实际启动一个线程来自己完成承诺(例如通过supplyAsync(。这也意味着可以同时解析同一级别上的字段。

也就是说,GraphQL规范要求在子字段之前解析父字段:

需要知道正在评估的对象值和对象类型

(强调矿(。这主要是因为子查询需要解析父查询的结果,而不是一些特殊的约束。如果你有一个真正独立于父字段的字段,我甚至认为它一开始就不应该有父字段。

相关内容

  • 没有找到相关文章

最新更新