我正在使用番石榴的Loading Cache
来缓存HTTP请求的结果。 Kotlin / KTOR提供基于协程(即非阻塞HTTP请求)的HTTP Client Library。
我的问题是,加载缓存不了解suspend
ing函数。我传递给加载缓存的load
函数无法暂停。因此,我被迫在runBlocking
调用中执行HTTP请求,从而完全消除了非阻塞调用的好处。
我的问题是:还有更好的方法吗?您将如何实现协程结果的缓存?
答案 0 :(得分:5)
您可以将goBack()
从协程const GET_ME = gql`
query me {
me {
_id
}
}
`;
const GET_WALLET = gql`
query getUserWallet($u_id: ID!) {
getUserWallet(u_id: $u_id) {
_id
}
}
`;
const CREATE_CARD = gql`
mutation($wallet_id: ID!, $cardNo: String!, $exp: String!, $cvc: String!, $card: String! $user: ID!) {
createPayment(wallet_id: $wallet_id, cardNo: $cardNo, exp: $exp, cvc: $cvc, card: $card, user: $user) {
_id
}
}
`;
const mutationConfig = {
props: ({ mutate }) => ({
createPayment: (wallet_id, cardNo, exp, cvc, card, user) => mutate({
variables: { wallet_id, cardNo, exp, cvc, card, user }
}),
})
}
export default compose(
withApollo,
graphql(GET_ME, { name: "getMe" }),
graphql(GET_WALLET, {
name: "getWallet",
options: (props) => (
{
variables:
{
u_id: props.getMe.me._id
}
}
)
}),
graphql(CREATE_CARD, mutationConfig)
)(AddCard);
放入番石榴的缓存中
类似这样的东西
Deferred