Apollo-link: Agregar opción de tiempo de espera para apollo-link-http

Creado en 20 feb. 2019  ·  7Comentarios  ·  Fuente: apollographql/apollo-link

Sería muy bueno poder incluir un valor de tiempo de espera de milisegundos en las opciones de apollo-link-http.

Incluso si esto no puede cancelar la recuperación en curso en este momento, sería muy útil para que todos no tengan que implementar su propia solución:

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

Comentario más útil

Hola, equipo de Apollo: Es muy útil tener una opción de tiempo de espera admitida de forma predeterminada en la implementación del cliente de Apollo Graphql. Como esto está estrechamente relacionado con las solicitudes de los clientes, es justo solicitar el tiempo de espera.
¿Ya estás planeando esta función? ¿Cuál es su posición actual en esta solicitud?

A la espera de saber de ti.

Gracias
aravind

Todos 7 comentarios

Sí, debería ser posible envolver la búsqueda y cronometrar la solicitud si es necesario.

Si las personas dependen de la versión sin tiempo de espera, tendríamos que proporcionar una opción de exclusión para este comportamiento.

Podemos usar abortConttoller para la cancelación en sí.

¿Pensamientos? @hwillson

@dshook @JoviDeCroock Creo que lo que realmente quieres es un enlace de tiempo de espera. Presumiblemente, desea limitar la cantidad de tiempo que la persona que llama podría tener que esperar una respuesta y simplemente devolver un error si no recibe una respuesta en ese tiempo, ¿correcto? Si es así, ponerlo en el enlace http no hará que se pueda combinar con otros enlaces. Su consulta también podría estar esperando o atascada en cualquier otro enlace, en realidad no tiene que ser el enlace de reintento. Podría estar en apollo-link-retry, apollo-link-serialize, apollo-link-queue, etc. Para garantizar un tiempo de espera específico, lo que realmente necesita es un enlace de tiempo de espera que se encuentre en la parte superior de la pila y cronometre eliminar las solicitudes que han tardado demasiado (cancelándolas y devolviendo un error), independientemente de en qué parte de la pila esté pendiente la solicitud.

Como señaló, cancelar la solicitud después de que se agote el tiempo no garantiza que el servidor no la haya visto, así que tenga cuidado con las mutaciones que no son idempotentes.

PD: Parece que alguien ya hizo un enlace de tiempo de espera (apollo-link-timeout). Desafortunadamente, no es muy flexible y rompe la abstracción del enlace (p. ej., acceder al enlace de búsqueda para abortar la solicitud y devolver un timeoutRef al que se puede llamar desde cualquier lugar), no parece estar bien probado, tiene algunos cuestionables valores predeterminados (tiempo de espera de 15 s en lugar de ningún tiempo de espera) y no es muy flexible (por ejemplo, el tiempo de espera no puede depender de las variables de consulta), pero probablemente funcionará para usted.

Estoy de acuerdo en que esto sería increíble, pero entiendo que Fetch API no tiene un mecanismo de tiempo de espera, por lo que no estoy seguro de si Fetch se usa bajo el capó o si solo se usan promesas regulares.

apollo-link-timeout no es flexible como mencionó @helfer . Creo que timeout debería ser dinámico. ¿Cómo podemos manejar el tiempo de espera de la mejor manera? 🤣

_ consulta de ejemplo _

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

Solo quiero seguir aquí, ¿cuál es la solución actual aceptable? Y representa un escenario del mundo real y parece una solicitud justa para un tiempo de espera.

Hola, equipo de Apollo: Es muy útil tener una opción de tiempo de espera admitida de forma predeterminada en la implementación del cliente de Apollo Graphql. Como esto está estrechamente relacionado con las solicitudes de los clientes, es justo solicitar el tiempo de espera.
¿Ya estás planeando esta función? ¿Cuál es su posición actual en esta solicitud?

A la espera de saber de ti.

Gracias
aravind

¿Esta función sigue en marcha? Realmente podríamos beneficiarnos de la opción de tiempo de espera si está disponible.

¿Fue útil esta página
0 / 5 - 0 calificaciones