Apollo-link: Adicionar opção de tempo limite para apollo-link-http

Criado em 20 fev. 2019  ·  7Comentários  ·  Fonte: apollographql/apollo-link

Seria muito bom poder incluir um valor de tempo limite de milissegundos nas opções apollo-link-http.

Mesmo que isso não possa abortar a busca em andamento no momento, seria muito útil para que todos não precisem rolar sua própria solução:

https://stackoverflow.com/questions/40837676/apolloclient-timeout-best-option
https://stackoverflow.com/questions/47198402/how-to-set-a-timeout-on-a-request-with-apollo-client

feature

Comentários muito úteis

Olá Equipe Apollo, É muito útil ter uma opção de tempo limite suportada por padrão na implementação do cliente apollo graphql. Como isso está intimamente ligado às solicitações do cliente, é justo solicitar o tempo limite.
Você já está planejando esse recurso? Qual é a sua posição atual sobre este pedido?

Ansioso por saber sobre você.

Obrigado
Aravind

Todos 7 comentários

Sim, deve ser possível encerrar a busca e o tempo limite da solicitação, se necessário.

Se as pessoas dependessem da versão sem tempo limite, precisaríamos fornecer uma opção de exclusão para esse comportamento.

Podemos usar o abortConttoller para o cancelamento em si.

Pensamentos? @hwillson

@dshook @JoviDeCroock Acho que o que você realmente quer é um link de tempo limite. Presumivelmente, você deseja limitar a quantidade de tempo que o chamador pode ter que esperar por uma resposta e apenas retornar um erro se nenhuma resposta retornar nesse tempo, correto? Nesse caso, colocá-lo no link http em si não o tornará combinável com outros links. Sua consulta também pode estar esperando ou travada em qualquer outro link, não precisa ser o link de repetição. Pode ser em apollo-link-retry, apollo-link-serialize, apollo-link-queue, etc. out solicitações que demoraram muito (cancelando-as e retornando um erro), independentemente de onde na pilha a solicitação esteja pendente.

Como você apontou, cancelar a solicitação após o tempo limite não garante que o servidor não a tenha visto, portanto, tenha cuidado com mutações que não são idempotentes.

PS: Parece que alguém já fez um link de timeout (apollo-link-timeout). Infelizmente, não é muito flexível e quebra a abstração do link (por exemplo, acessando o link de busca para abortar a solicitação e retornando um timeoutRef que pode ser chamado de qualquer lugar), não parece ser bem testado, tem alguns questionáveis defaults (tempo limite de 15s em vez de nenhum tempo limite) e não é muito flexível (por exemplo, o tempo limite não pode depender de variáveis ​​de consulta), mas provavelmente fará o truque para você.

Concordo que isso seria incrível, mas entendo que a API Fetch não tem mecanismo de tempo limite, então não tenho certeza se Fetch é usado nos bastidores ou se apenas promessas regulares são usadas.

apollo-link-timeout não é flexível como @helfer mencionou. Acho que timeout deve ser dinâmico. Como podemos lidar com o tempo limite da melhor maneira? 🤣

_ consulta de exemplo _

<Query
  query={FETCH_QUERY}
  context={{ timeout: 5000 }}
>...</Query>

Só quero acompanhar aqui, qual é a solução atual aceitável? E representa um cenário do mundo real e parece um pedido justo de tempo limite.

Olá Equipe Apollo, É muito útil ter uma opção de tempo limite suportada por padrão na implementação do cliente apollo graphql. Como isso está intimamente ligado às solicitações do cliente, é justo solicitar o tempo limite.
Você já está planejando esse recurso? Qual é a sua posição atual sobre este pedido?

Ansioso por saber sobre você.

Obrigado
Aravind

Esse recurso ainda está no caminho certo? Podemos realmente nos beneficiar da opção de tempo limite, se estiver disponível.

Esta página foi útil?
0 / 5 - 0 avaliações