Apollo-link: 让 apollo-link-batch-http 的用户决定批处理哪个请求

创建于 2018-01-07  ·  2评论  ·  资料来源: apollographql/apollo-link

使用 _apollo-link-batch-http_ 时,特定时间间隔内的所有请求都被批量调用。 在我们的应用程序中,大多数请求都很快,但我们也有一些耗时的请求。 将已知的慢请求与其他请求进行批处理会导致较差的用户体验,因为现在所有请求的响应时间都与最慢的请求相同。 这就是为什么如果有一个回调可以决定是否应该立即批量触发请求会很好。

最有用的评论

你可以用split来做
__links.js__

const batchHttpLink = new BatchHttpLink({
  fetch: createApolloFetch({
    constructOptions,
    uri: process.env.REACT_APP_API_ENDPOINT,
  }),
})

const normalHttpLink = createHttpLink({
  uri: '/graphql',
  credentials: 'same-origin',
})

export split(({getContext}) => getContext().noBatch, normalHttpLink, batchHttpLink)

查询不使用批量链接

const ProfileWithData = graphql(CurrentUserForLayout, {
  options: { 
    context: { noBatch: true }
  },
})(Profile);

在这里,我在上下文中使用noBatch来控制是否应批处理查询。 默认情况下,所有查询都将被批处理。

所有2条评论

你可以用split来做
__links.js__

const batchHttpLink = new BatchHttpLink({
  fetch: createApolloFetch({
    constructOptions,
    uri: process.env.REACT_APP_API_ENDPOINT,
  }),
})

const normalHttpLink = createHttpLink({
  uri: '/graphql',
  credentials: 'same-origin',
})

export split(({getContext}) => getContext().noBatch, normalHttpLink, batchHttpLink)

查询不使用批量链接

const ProfileWithData = graphql(CurrentUserForLayout, {
  options: { 
    context: { noBatch: true }
  },
})(Profile);

在这里,我在上下文中使用noBatch来控制是否应批处理查询。 默认情况下,所有查询都将被批处理。

感谢您提供@charleyw的示例 - 我将继续关闭此问题,因为问题似乎已得到解答。

此页面是否有帮助?
0 / 5 - 0 等级